shell中 >/dev/null 2>&1是什么意思
原文地址: http://juke.outofmemory.cn/entry/295292 我们经常能在 shell 脚本中发现 > /dev/ null 2 >& 1 这样的语句。以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了 2 >& 1 > /dev/ null ,出了一点小问题之后,我才开始去了解这段命令背后的“玄机”。 shell重定向介绍 就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果输出到指定的位置。在交互式的程序中,输入来自用户的键盘和鼠标,结果输出到用户的屏幕,甚至播放设备中。而对于某些后台运行的程序,输入可能来自于外部的一些文件,运算的结果通常又写到其他的文件中。而且程序在运行的过程中,会有一些关键性的信息,比如异常堆栈,外部接口调用情况等,这些都会统统写到日志文件里。 shell脚本也一样,但是我们一般在使用shell命令的时候,更多地还是通过键盘输入,然后在屏幕上查看命令的执行结果。如果某些情况下,我们需要将shell命令的执行结果存储到文件中,那么我们就需要使用输入输出的重定向功能。 文件描述符 当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来方便我们使用: 类型 文件描述符 默认情况 对应文件句柄位置 标准输入(standard input) 0 从键盘获得输入 /proc