在一些Shell脚本中,特别是Crontab的脚本中,常常会看到 >/dev/null 2>&1这样的写法。linux
其实这个很好理解。咱们分两部分解释。shell
1. >/dev/nullspa
你们知 “>”(右尖括号) 在unix/linux shell 中表示 输入到 的意思,就是把”>”左边的内容输入到”>”右边。unix
好比:echo text>1.txt 就把“text”这个文本输入到1.txt这个文件中。class
那么 “/dev/null” 又是个什么东东呢?它表明一个空设备,即不存在的设备。也就是说,抛弃”>”左边的内容,不进行输出。error
2. 2>&1脚本
这个实际上是三个部分组成的:2, >&, 1 。咱们先来搞清楚这里的2和1是什么意思。在/usr/include/unistd.h中,你能够找到以下代码。tab
#define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 文件
这是三种不一样的流。ab
2表明stderr.
1表明sdtout.
而 &> 则表示把符号左边的内容以符号右边的形式输出。
2&>1 就是把,把stderr作为stdout输出。
如今咱们结合这两个部分来看。2&>1定义了把stderr作为标准的stdout流输出,而后stdout的内容所有写入/dev/null,也就是说被舍弃掉。
结论就是,不管执行的是什么命令,哪怕运行中出现了error都不会有回显。