重定向标准输入/输出/错误输出
类型 | 操作符 | 用途 |
重定向输入 | < | 讲文本输入来源由键盘改为指定的文件 |
重定向输出 | > | 将命令行的正常执行输出保存到文件,而不是直接显示在屏幕上 |
>> | 与>类似,但操作是追加而不是覆盖 | |
重定向错误 | 2> | 将命令行的执行出错信息保存到文件,而不是直接显示在屏幕上 |
2>> | 与2》类似,但操作是追加而不是覆盖 | |
混合重定向 | &> | 相当于>和2>, 即错误与正确的信息都收集,覆盖到同一个文件 |
1)重定向标准输出。
使用 > 将命令执行的正常输出重定向到文件:
[root@jumper ~]# ls -ld /etc/ > stdout.txt //重定向到文件
> 操作会覆盖目标文件(先清空、再写入):
改用 >> 可实现追加重定向输出:
[root@jumper ~]# ls -ld /etc/ >> stdout.txt //追加输出
2)重定向标准错误。
对于命令执行出错的信息,使用 > 无法保存,仍然会输出到屏幕。比如,可使用ls命令同时查看两个对象(其中result.txt并不存在),重定向输出:
[root@jumper ~]# ls -l result.txt /etc/fstab > stderr.txt
使用 2> 可重定向错误信息,比如,可执行一个错误的命令:
[root@jumper ~]# ls -l result.txt /etc/fstab 2> stderr.txt //正确的信息默认输出至屏幕,错误信息重定向到目标文件
[root@jumper ~]# cat stderr.txt //从文件中查看出错信息
ls: result.txt: 没有那个文件或目录
类似的,2>> 可实现追加输出:
[root@jumper ~]# ls tmpfile 2>> stderr.txt
若希望将正常输出、错误输出重定向同一个文件,可使用 &> :
[root@jumper ~]# ls -l result.txt /etc/fstab &> stderr.txt
[root@jumper ~]# cat stderr.txt
ls: result.txt: 没有那个文件或目录
-rw-r--r--. 1 root root 541 1月 5 2017 /etc/fstab
3)重定向标准输入。
[root@jumper ~]# mail -s Error root < /etc/passwd
4)案例 批量添加用户,并且添加密码
[root@jumper ~]# cat /root/createuser.sh
#!/bin/bash
for i in {1..10}
do
useradd user$i 2>>/root/user.log
echo ‘123456‘ | passwd --stdin user$i >/dev/null
done
原文:https://www.cnblogs.com/gyue6/p/11028841.html