本次内容
1.三种I/O设备
2.把I/O从定向入文件
3.命令tr
4.使用管道链接命令
5.tee
我们都知道程序是由:指令+数据
读入数据:Input
输出数据:output
而打开的文件都有一个fd: file
descriptor (文件描述符)
同时也有三种I/O设备:
标准输入 0 默认是由接受键盘输入
标准输出 1 默认是输出到终端窗口显示屏
标准错误 2 默认是输出到终端窗口显示屏
I/O重定向:改变默认位置
标准输出的不管是错误或默认输出都可以重定向到文件之中它的格式为:
命令 操作符号 文件名
支持符号包括
> 把标准输出重定向到文件中
2> 把错误重定向到文件中
&> 把所有(不管是正确还是标准输出错误)的重定向到文件中
注意:
用重定向符号时> ,2> ,
&> 时原来的文件内容会被覆盖
在原来基础上,追加内容 >>
2>: 覆盖重定向错误输出数据流
2>>:
追加重定向错误输出数据流
标准输出和错误输出各自定向至不同位置
OMMAND >
/path/to/file.out2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向
&>覆盖重定向
&>>
追加重定向
COMMAND
> /path/to/file.out 2>&1 (顺序很重要)
COMMAND
>> /path/to/file.out 2>&1
注意:>>& 排序是错误的
标准输出 <
tr转换和删除字符
tr[OPTION]…
SET1 [SET2]
选项:
-c–C –complement:取反(除了)
-d–delete:删除所有属于第一字符集的字符
-s 连续的压缩
使用“<<终止词”命令从键盘把多行重导向给STDIN
直到终止词位置的所有文本都发送给STDIN
有时被称为就地文
管道
管道(使用符号“|”表示)用来连接命令
命令1 | 命令2 | 命令3 | …
表示用命令1的输出作为命令2的输入命令2的输出作为命令3的输入
注意:STDERR默认不能通过管道转发,可利用2>&1 或|& 实现
将/home 里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,经过管道后,将tar -cvf-/home 传送给后面的tar -xvf-, 后面的这个-则是取前一个命令的stdout,因此,就不需要使用临时file了
tar -cvf-/home | tar -xvf-
命令1 | tee[-a ] 文件名| 命令2
把命令1的STDOUT保存在文件中,做为命令2的输入
-a 追加
使用:
保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出
一道很有意思的题目,不用循环,可以用管道
计算1+2+3+..+99+100的总和
原创文章,作者:m25Chronos,如若转载,请注明出处:http://www.178linux.com/82473