有关 shell 重定向输出>和>> and 2>&1 的介绍

发布时间:2020-08-11编辑:脚本学堂
有关 shell 重定向输出>和>> and 2>&1 的介绍,供大家学习参考。

有关 shell 重定向输出>和>> and 2>&1 的介绍,供大家学习参考。

shell >和>>都是重定向输出
1> 指标准信息输出路径
2> 指错误信息输出路径
2>&1 指将标准信息输出路径指定为错误信息输出路径(也就是都输出在一起)

补充问题4<&0:
<和<<都是重定向输入
<0指标准输入路径
4<&0 指的是将文件描述符4指定为标准输入(实际可选4到9之间任意一个数字)

不知下面两句是否写得有点问题,或者是断章取义,总觉得前面可能有“|”符号
grep "standard"* > grep.out 2>&1
指的是将包含"standard" 的行全部写入grep.out文件中,包括grep时发生错误的报错信息
cat >>filetest 2>&1 <<MAYDAY
如果前面没有“|” 没感觉和 cat MAYDAY >>filetest 2>&1 有什么差别
如果有的话,应该就是将前面得到的信息和MAYDAY 中信息一起写入filetest,包括执行命令时的报错信息,但我好像执行不通过。。。

习惯上
标准输入(standard input)的文件描述符是 0
标准输出(standard output)是 1
标准错误(standard error)是 21是标准输出
2是错误输出
> 和 >> 都是输出重定向符号。标准输出默认是打印到控制台,如果要导入到文件,就需要使用>或>>。> 会覆盖已有的文件内容,而>>会附加到已有内容之后。
< 和 << 是输入重定向符号。从文件中读取内容。
2>&1 是把错误输出导入(合并)到标准输出流中

grep "standard"* > grep.out 2>&1 就是将标准输出与错误输出一并送入grep.out文件中,写文件方式为覆盖写(>)。
cat >>filetest 2>&1 <<MAYDAY 就是从MAYDAY中读取文件内容,将标准输出与错误输出一并送入filetest文件中,写文件方式为附加写(>>)。