重定向问题学习
转自:https://blog.csdn.net/liucy007/article/details/90207830
1.Linux重定向输出
输出分为正确输出和错误输出:
- 0代表标准输入,
- 1代表标准正确输出,
- 2代表标准错误输出。
注意:错误输出重定向>/>>后边没有空格。
上图中1和3、2和4作用是相同的。
2.输入重定向
用 < 来改变读进的数据信道(stdin),使之从指定的文件读进。
3.和echo结合
转自:http://t.csdn.cn/jDNjO,相当复杂,讲的不错。
&是文件描述符,&2 表示错误通道2,
echo hello 1>&2
表示hello 重定向输出到错误通道2。当然也是显示器上,只不过是标准错误输出。
echo hello 1>2
是hello 重定向输出到2这个文件里去了。
echo 1>FLAG
表示将标准输出重定向到FLAG文件,内容什么也没有。
echo hello 1>&2 |grep aaa #输出hello,1>&2 将正确输出重定向到标准错误2通道 echo hello 2>&1 |grep aaa #无输出,2>&1将错误输出重定向到标准输出1通道
- echo hello 1>&2 后面跟了一个 | grep aaa:| 是管道,意思就是将第一条指令的结果放到第二条指令中,管道命令右边只处理左边的标准正确输出,也就是通道1;| grep aaa 搜素左边传来的标准输出通道1的结果,发现没有aaa,所以没有输出,最终屏幕只显示一个hello。【原来是这样】
- 将错误返回值输出到标准1通道,不过该语句正确,没有错误,通道2也就为空,屏幕没有显示,| grep aaa 搜素左边传来的标准输出通道1的结果,通道1有hello 但是没有 aaa 所以没有输出,所以屏幕没有显示。
新例子: