重定向标准输出(stdout)同时输出到文件
正文
重定向标准输出(stdout)同时输出到文件
program [arguments...] 2>&1 | tee [-a] outfile
此处简单解释一下 2>&1
, 这个应该可以拆解成 三部分理解,分别为 2
, >
, &1
。
2
为 进程第 2 个的文件描述符(file descriptor), 即 stderr
标准错误流
>
为 重定向
&1
为 进程第 1 个的文件描述符(file descriptor), 即 stdout
标准错误流
合起来就是 将 stderr
重定向到 stdout
.
可以对比以下两个命令输出的不同情况
ls foo > /dev/null 2>&1
ls foo > /dev/null
其中 /dev/null
可以简单理解为一个黑洞/垃圾箱。它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到。
参考
Understanding Shell Script’s idiom: 2>&1
https://www.brianstorti.com/understanding-shell-script-idiom-redirect/
linux shell中”2>&1″含义
https://www.cnblogs.com/zhenghongxin/p/7029173.html
Leave a Reply