管道输出

1.命令输出结果

linux echo打印到log_linux


正确输出如下,其他输出为错误输出

linux echo打印到log_linux_02


以非root用户执行以下操作:

<1>重定向正确输出

find /etc -name passwd  >  file
“ > ”符号会覆盖掉file文件原有的内容, 要想向file文件追加内容,使用“ >> ”符号

<2>追加正确输出

find /etc -name passwd  >>  file

linux echo打印到log_重定向_03

<3>重定向错误输出

find /etc -name passwd  2> file

<4>追加错误输出

find /etc -name passwd  2>> file

linux echo打印到log_linux echo打印到log_04

<5>重定向所有输出

find /etc -name passwd  &> file

<6>追加所有输出

find /etc -name passwd  &>> file

linux echo打印到log_标准输出_05

<7>“改邪归正”输出

所谓”改邪归正”,即,2>&1,将标准错误输出2重定向到标准输出中,”2>”就是标准错误输出,”&”是为了让bash将1解释成标准输出而不是文件名字为1的文件。

2.管道

管道符号“ | ”,其作用是,在前一个命令的基础上,在交给下一个命令进一步处理(前面的命令的输出当作后面的命令输入)

注:管道只允许正确的输出通过

<1>将错误标准输出解释为正确输出,通过管道

linux echo打印到log_linux_06

<2>将错误标准输出扔到“垃圾桶”,正确输出通过管道

linux echo打印到log_重定向_07

<3> > /dev/null 2>&1和2>&1 > /dev/null的区别

> /dev/null 2>&1含义:
首先表示标准输出重定向到空设备文件,接着,标准错误输出重定向标准输出,因为之前标准输出已经重定向到空设备文件,所以标准错误输出也重定向到空设备文件,于是,管道什么也没有通过

2>&1 > /dev/null 含义:
首先,标准错误输出重定向标准输出,再次之前标准输出并没有重定向,所以标准错误重定向为的标准输出被“忽略”,然后,标准输出重定向到空设备文件,于是,通过管道的就是之前被剩下的输出

linux echo打印到log_标准输出_08

<4> | tee 复制输出

linux echo打印到log_标准输出_09