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 会发现里面什么都没有?

相关推荐:
为何会出现ECC证书?原因在于RSA算法过于庞大,不适于移动端运行。采用RSA算法的SSL证书,已经开始应用于移动互联网。为了确保加密强度,目前SSL证书普遍采用的2048位以上RSA加密算法,但由于移动设备加解 …
各种U盘启动模式简介(USB-HDD、ZIP、HDD+、ZIP+、USB-CDROM) 1、USB-HDD:硬盘仿真模式,DOS启动后显示C:盘。此模式兼容性很高,但对于一些只支持USB-ZIP模式的电脑则无法启动,特别是一些老爷机。 2、USB- …
在新的API版本下,请使用 startActivityForResult 方法来代替旧的startSubActivity方法。
常用的APT命令参数   apt-cache search package 搜索包   apt-cache show package 获取包的相关信息,如说明、大小、版本等   sudo apt-get install package 安装包   sudo apt-get install packag …
HTTPS禁止使用ALLOW_ALL_HOSTNAME_VERIFIER,因为这样会存在中间人攻击的风险。 必须使用STRICT_HOSTNAME_VERIFIER并校验证书,详细修复方案请参照Google官方关于SSL的安全建议:https://developer.android …
拿起手机扫一扫即可带走我!