Shell:重定向和文件描述符
重定向:
echo -n "hello" > hello.txt
echo " world" >> hello.txt
cat hello.txt #hello world
# 将标准输出和标准出错都输出到/dev/null,即丢弃
cat hello.txt > /dev/null 2>&1
文件描述符:
文件描述符是linux系统用来访问文件的一个特殊指针,如系统预设文件描述符:
标准输入stdin:0
,标准输出stdout:1
,标准错误stderr:2
,这三个文件都在/dev/std*
。
重定向:
ls + 2> err.txt #将错误信息重定向输出到err.txt
cat a* &> all.txt #将标准信息和错误信息都重定向输出到all.txt
>log 2>&1
和2>&1 >log
的区别:
>log 2>&1
会先将stderr重定向到stdout,再将stdout重定向到log文件,所以会将全部打印信息都输出到log。
2>&1 >log
会先将stdout重定向到log文件,再将stderr重定向到stdout,所以log文件里只会有stdout信息,而错误信息会打印到控制台(stderr)。