1. 请帮忙注解一下下边的shell命令,其中的 "1>” "2>" "2>&1" 具体什么意思,有什么含义?(百度知道)
cat account_qtr.doc account_end.doc 1>accounts.out 2>accounts.err 把两个文件合并到accounts.out中 grep "standard"* > grep.out 2>&1 cat >>filetest 2>&1 <<MAYDAY
另: exec 4<&0 0<stock.txt ,这里的4<&0是什么含义
**************************************************************
1是标准输出
2是错误输出
> 和 >> 都是输出重定向符号。标准输出默认是打印到控制台,如果要导入到文件,就需要使用>或>>。> 会覆盖已有的文件内容,而>>会附加到已有内容之后。
< 和 << 是输入重定向符号。从文件中读取内容。
2>&1 是把错误输出导入(合并)到标准输出流中
grep "standard"* > grep.out 2>&1 就是将标准输出与错误输出一并送入grep.out文件中,写文件方式为覆盖写(>)。
cat >>filetest 2>&1 <<MAYDAY 就是从MAYDAY中读取文件内容,将标准输出与错误输出一并送入filetest文件中,写文件方式为附加写(>>)。
补充问题4<&0: <和<<都是重定向输入 <0指标准输入路径 4<&0 指的是将文件描述符4指定为标准输入(实际可选4到9之间任意一个数字)
习惯上 标准输入(standard input)的文件描述符是 0 标准输出(standard output)是 1 标准错误(standard error)是 2*******************************************************************************************************************2. > /dev/null < /dev/null 2>&1
把标准输入也重定向了
/dev/null这个文件作为读的时候有个特点,就是一读,马上就返回0,意味着文件结束了
这区别就在于程序编写中判别标准输入啊,当没看到标准输入文件结束程序就不退出.
一旦标准输入是/dev/null,马上就看到标准输入结束了