Linux 中 Shell 重定向
在 shell 脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是 0,1,2 。
&是一个描述符,如果 1 或 2 前不加 &,会被当成一个普通文件。>默认为标准输出重定向,与1>相同1>&2意思是把标准输出重定向到标准错误.2>&1意思是把标准错误输出重定向到标准输出。&>filename意思是把标准输出和标准错误输出都重定向到文件 filename 中.>&2即1>&2也就是把结果输出到和标准错误一样
/dev/null是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉
标准输出和错误输出
由于
1.txt不存在,所以ls: 1.txt: No such file or directory就是错误输出就是 2。rumenz.txt文件是存在的,所以rumenz.txt就是标准输出。就是 1。
把上述的标准输出和错误输出重定向到文件
out.log存的是标准输出err.log存的是错误输出
案例分析
由于只重定向了标准输出,所以
out.txt文件只有标准输出
> out.log将标准输出重定向到文件,但是1>&2将标准输出重定向到了错误输出,所以out.log里面什么也没有.
> out.log将标准输出重定向到文件,但是2>&1将错误输出重定向到标准输出,所以out.log里面既有正常的输出也有错误的输出.
/dev/null
/dev/null:表示 的是一个黑洞,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件
原文链接:https://rumenz.com/rumenbiji/linux-shell-redirect.html
微信公众号:入门小站
版权声明: 本文为 InfoQ 作者【入门小站】的原创文章。
原文链接:【http://xie.infoq.cn/article/f8b73ca61cab7edf848411d34】。文章转载请联系作者。











评论