标准输入输出与管道
1、标准输入和输出
程序:指令+数据
指令:计算、加减乘除
数据:输入数据、输出数据
2、在Linux中每一个打开的文件都会分配一个当前进程中唯一的文件描述符,用来标识文件的状态
fd:file descripor
3、Linux提供给程序的有三种I/O设备
1、标准输入(stdin) -0 默认接受来自键盘的输入
2、标准输出 (stdou) -1 默认输出到终端窗口
3、标准错误 (stderr) -2 默认输出到终端窗口
4、I/O 重定向:改变默认的输入、输出的位置,重新定位到其他的地方
1、将stdin stdout stderr重新定位到文件中
> stdout 的重新定位
2> stderr 的重新定位
&> 将所有的输出重新定位
使用了 > stdout 的重新定位 ,执行结果,将不会输出到,终端上,被重定向到11.txt中,如果该文件不存在,则会被创建
一个错误的命令,使用的是 2 ,默认输出到终端,可以使用 2>重定向到22.txt 文件中,终端就不会打印错误的信息
如果一个命令中既有标准输出、又有标准错误输出,则使用 &> 定位
注意使用 >
2>
&>
这是都是覆盖文件,如果想要追加这则使用
>>
2> >
&> >
2、将标准输入、与标准错误重新全部定位到文件中,除了使用 &>>,还可以如下使用方式,但是注意顺序很重要
4、tr 命令的使用
用途: 转换和删除字符
语法:tr [ - options ....] set1 set2
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
-c –C --complement:取字符集的补集
5、从文件中导入输入流
1、使用<来重定向标准输入
2、某些命令能够接受从文件中导入的STDIN
3、如cat 、tr等
4、可以多行一起发送给STDIN ,使用 << EOF终止词
6、管道
1、 管道(使用符号“|”表示)用来连接命令
2、语法:cammand1 | cammand2 | cammand3
3、将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
4、STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
7、重定向到多个目标(tee)
用法: cammand1 | tee file | cammand2
作用:可以将上一个命令标准输出流定位到文件中,又可以将其传中下一个命令作为其标准的输入流
原文地址:http://blog.51cto.com/12302981/2154730