#004 - 01 I/O重定向及管道
企业开发
2018-05-08 05:07:04
阅读次数: 4
程序:指令 + 数据
- 可用于输入的设备:文件
- 可用于输出的设备:文件
- 程序的数据流有三种:
- 输入的数据流: <— 标准输入(stdin):默认键盘
- 输出的数据流:—> 标准输出(stdout):默认显示器
- 错误输出流:—> 错误输出(stderr):默认显示器
- fd:file descriptor,文件描述符
I/O重定向:改变默认的标准输入-键盘,默认的标准输出-显示器
- 输出重定向:> / >>
- 特性:覆盖输出 / 追加输出,只能输出正确输出流(意味着错误的输出流会输出到标准输出 - 默认显示器)
- help set :
-
- C :禁止通过输出重定向( > )覆盖原有文件内容 - If set, disallow existing regular files to be overwritten by redirection of output.
- 在启用 - C 特性的时候,需要强制覆盖输出,使用 “ >| “
-
- 仅在当前shell生效
- 错误输出流重定向:2> / 2>>
- 特性:覆盖输出 / 追加输出,只能输出错误输出流(意味着正确的输出流会输出到标准输出 - 默认显示器)
- 合并正常输出流和错误输出流:
- &> / &>> :
- 特性:无论是正确还是错误,都能把输出流重定向到文件中,(意味着不会将任何输出流输出到标准输出 - 默认显示器)
- cat a.txt >> b.txt 2>&1:” 2>&1 “不能用>>,中间也没有空格符号
- 标准输出已经重定向到b.txt这个文件,标准输出就是b.txt文件
- &1意味着前面的标准输出,也就是b.txt这个文件
- 这句话意思就是:将a.txt的正确输出重定向追加到b.txt,将错误输出重定向也追加到b.txt
- 总结:重定向标准输出后,标准输出就是重定向的对象
- 输入重定向:没有追加一说
- < :改变标准输入
- tr:转换
- tr SET1 SET2 < /PATH/FROM/SOMEFILE
- <<:here document - 此处创建文档
- 格式:cat > /PATH/TO/SOMEFILE << EOF STRING EOF
- 解释:将EOF中的内容 - STRING - 创建为SOMEFILE文件e
管道:连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流
- COMMAND1 | COMMAND2 | COMMAND3 …..
- linux重要哲学思想之一:组合小程序,完成复杂任务
- 一旦管道建立,前一个命令的输出就看不见了,能不能把前一份命令的输出先保存?
- tee - read from standard input and write to standard output and files
- 可以同时完成两个操作,从标准输入读入,写入标准输出和文件。经常跟管道使用。
- cat /etc/issue | tee /tmp/issue.tee | tr ‘a-z’ ‘A-Z’
- tee命令不仅将/etc/issue输出到了标准输出,还将其保存到了/tmp/issue.tee
转载自blog.csdn.net/Aarron_DL/article/details/80211187