经常在shell脚本中,看到有"2>&1"字样的写法,到底这是什么意思呢?
解决办法:
1。这里的1和2指的是文件描述符。
0:stdin
1:stdout
2:stderr
2。 ">"则是重定向符号。
“2>&1”的意思是:将输出到标准出错处理的信息,发送到标准输出中。
3。“2>&1”的记忆:
如果只有“2>1”,看起来像是将文件2的内容重定向到1文件中去了,加上"&",则表示“&”之后跟着的数字是文件描述符。
标准出错也定位到这个文件中 2代表标准出错,如果文件不存在,如果不加上2>&1则会打印出错信息, 加上以后就不会打印了,也进入那个文件了 &1代表标准输出定向到的地方,这句相当于 cat cities > cities.copy 2> cities.copy 或者 cat cities 1> cities.copy 2> cities.copy 或者 cat cities 2> cities.copy 1> &2 0:标准输入,1:标准输出,2:标准出错 |
|