首先明白几个概念:
标准输入:STDIN,即 standard input,即输入到程序的信息
标准输出:STDOUT,即 standard output,即程序正常执行后返回的正确信息
标准错误输出:STDERR,即 standard error output,即程序执行失败后返回的错误信息
概念的对应代码:
STDIN 的代码为0,使用 < 或者 <<
STDOUT 的代码为1,使用 > 或者 >> 或者 1> 或者 1>>
STDERR 的代码为2,使用 2> 或者 2>>
示例说明:
将正确输出和错误输出分流:
find / 1> list_right 2> list_error
知道会发生错误但是忽略并丢弃
find / 2> /dev/null
将正确信息和错误信息写入同一文件:
find / > list 2> list #错误或不合适的写法
find / > list 2>&1 #正确写法
find / &> list #正确写法
写法1错误原因为,由于两股数据同时写入一个文件,造成两股数据可能会交叉写入造成次序混乱
<< 的使用:
cat > test.txt <<"eof"
>123
>456
>eof
cat test.txt
123
456
# 拓展题外话
heredoc 默认会解释变量
如果想不解释变量,可以在该字符串前加反斜杠转义,或者使用一对单引号闭合第一个 endpoint keyword (大家都习惯使用 EOF )
其它的一些经典写法:
&>/dev/null
等价于:
1>/dev/null 2>&1
原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com