Linux中 2>&1 是什么
文章目录
【注意】最后更新于 April 21, 2020,文中内容可能已过时,请谨慎使用。
标准输入输出
Linux 中三种标准输入输出:
- STDIN:标准输入,默认从键盘读取信息
- STDOUT:标准输出,默认将输出结果输出至终端
- STDERR:标准的错误信息,默认也会显示在终端上
由于STDOUT
与STDERR
都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1
表示STDOUT
,2
表示STDERR
,0
表示:STDIN
。
案例分析
/tmp/test.sh > /tmp/test.log 2>&1
,这里2>&1
的意思就是将标准错误也输出到标准输出当中。
编写test.sh
文件测试:
|
|
赋予可执行权限x
,并执行查看输出结果:
|
|
通过./test.sh > test.log
这种方式,可以看到错误的信息
并没有被追加到test.log
而是输出了,结果如下:
|
|
那如果是在crontab
中执行,这样的错误我们如何也记录test.log
中呢?看下面写法:
|
|
错误输出也被记录到test.log
了,2>&1
表示:将标准错误也输出到标准输出当中。
补充:
./test.sh > /dev/null 2>&1
,/dev/null
表示空设备,整句意思标准输出重定向到空设备文件,当然也不会输出任何信息到终端。
文章作者 BING
上次更新 2020-04-21