重定向操作

重定向标准输入/输出/错误输出

 

 

类型 操作符 用途
重定向输入 < 讲文本输入来源由键盘改为指定的文件
重定向输出 > 将命令行的正常执行输出保存到文件,而不是直接显示在屏幕上
>> 与>类似,但操作是追加而不是覆盖
重定向错误 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

 

posted @ 2019-06-16 10:54  秋霖  阅读(232)  评论(0编辑  收藏  举报