shell命令中重定向符号&>file、2>&1、1>&2的区别

我们将直接通过几个例子来讲解。

grep abc test.txt 1>&2
rm -f $(find / -name test) &> /dev/null

上面两例中的 & 如何理解,& 不是放到后台执行吗?

案例分析:

1.&>file 或 n>&m 均是一个独立的重定向符号,不要分开来理解。

2.明确文件和文件描述符的区别。

3.&>file 表示重定向标准输出和错误到文件,例如:

rm -f $(find / -name test) &> /dev/null

/dev/null 是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉。

4.n>&m 表示使文件描述符 n 成为输出文件描述符 m 的副本。这样做的好处是,有的时候你查找文件的时候很容易产生无用的信息,如:2 > /dev/null 的作用就是不显示标准错误输出;另外当你运行某些命令的时候,出错信息也许很重要,便于你检查是哪出了毛病,如:2>&1。

更多例子:

注意,为了方便理解,必须设置一个环境使得执行 grep abc test.txt 命令会有正常输出和错误输出,然后分别使用下面的命令生成三个文件:

grep abc test.txt > log1
grep abc test.txt > log2 1>&2
grep abc test.txt > log3 2>&1 #grep abc test.txt 2>log4 1>&2 结果一样

1.查看 log1 会发现里面只有正常输出内容?

2.查看 log2 会发现里面什么都没有?

我要评论!

想一个你喜欢的昵称。
给一个你的常用邮箱。
想和萌萌哒的TA们说点啥。
  • 首先将以下代码保存为*.bat DEL /F /A /Q \\?%1 RD /S /Q \\?%1 将要删除的文件以及文件夹拖到该批处理上。
  • pip类似RedHat里面的yum,安装Python包非常方便。 python -m pip install --upgrade pip
  • Dism++(系统精简利器)是一款Windows系统精简工具,在某种程度上可以说是以前的Dism管理器的升级版(最开始的名字叫Windows更新清理工具),Dism++(系统精简利器)全新的构建,更小的体积占用,更快的响应,更为底层的操作了系统,Dism++(系统精简利器)提供更加丰富的制定,支持所...
  • 思源系列包含 思源黑体、思源宋体、思源柔黑体。 思源黑体(英语:Source Han Sans)是Adobe与Google所领导开发的开源字体家族,1.001及更早版本以Apache 2.0许可证授权,而1.002及更新版本则使用SIL开源字体授权,属于无衬线黑体。思源黑体于2014年7月16日首次...
  • 漏洞描述: 2017年10月2日, 由Google安全团队发现的多个DNSMASQ安全漏洞被披露。其中漏洞编号为 CVE-2017-14491、CVE-2017-14492、CVE-2017-14493 的三个漏洞被相关厂商标记为严重等级, 剩余编号为 CVE-2017-14494、CVE-2017...
微信扫一扫即可带走我!