- 1. 第七单元
标准输入输出、重定向及管道
- 2. 学习大纲标准输入、输出以及错误输出
重定向
输入结束符
管道
综合应用
- 3. 1、标准输入、输出以及错误输出标准输入:过滤器的数据来源。
标准输入stdin(0):默认是键盘
标准输出:过滤器的数据去向。
标准输出stdout (1):默认是终端屏幕
标准错误输出 :报错讯息与标准输出走不同的I/O通道。
标准错误输出stderr(2):默认是终端屏幕
- 4. 2、重定向重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向。
常见的重定向
输入重定向
输出重定向
追加重定向
错误输出重定向
双重输出重定向
- 5. 2.1、输入重定向有一些指令需要用户从标准输入(键盘)来输入数据,但某些时候如果让用户手动输入数据的话,将会相当麻烦。
使用“<”来重定向输入源
例:mail -s “hello” lonny@example.com < file
- 6. 2.2、输出重定向大多数的指令在正确执行后都会有一个执行结果显示在标准输出(屏幕终端)上。用户可以使用“>”改变数据输出目标,一般是另存到一个文件中供以后分析,而不再显示屏幕终端上。
范例:
df -h > mydisk
将当前系统的磁盘分区的使用状况保存到mydisk文件中,不让它显示在屏幕上。
注意:如果原文件存在并有内容,那么新的执行结果会覆盖原文件内容。
- 7. 2.3、追加重定向在上节中提到,使用“>”进行输出重定向,文件的原内容会被覆盖。那么有没有一个办法不覆盖原文件内容,只是追加在其后呢?
使用“>>”,就可以将正确的输出结果追加到一个文件中。
例“ls –l >> listfile
- 8. 2.4、错误输出重定向如果一个指令执行错误时,也会在屏幕上显示错误提示信息。虽然它与标准输出一样都会将结果显示在屏幕上,但它们占用的I/O通道不同。
如果要将错误结果重定向到另一个地方则就不能再使用“>”来实现了,得使用“2>”将报错讯息重定向。
例:ds -h 2> erro
也可使用“2>>”将报错讯息追加入一个文件。
例:lt -l 2>> eroo
- 9. 2.5、双重输出重定向如果用户想将正确的输出结果与错误输出结果一次性单独地送到不同的地方则可使用下面的双重输出重定向。
例:ls -l 2> error > results
LS -a 2>> error >> results
如果用户将不管是正确输出还是错误输结果都送到同一个指定的地方则可使用“&> 或 &>>” 来完成。
例:ls -l &> result
LS -l &>> erro
- 10. 3、输入结束符用户可以通过cat > file来创建文件并为文件输入内容,输入结束后按下快捷键“ctrl+d”结束输入。
[root@server1 ~]# cat > file
hello every body
this is a test
Ctrl+D
[root@server1 ~]# cat file
hello every body
this is a test
使用 << 让系统将一次键盘的全部输入,先送入虚拟的‘当前文档’,然后一次性输入。
可以选择任意符号作为终结标识符。
[root@server1 ~]# cat > file << quit
> hello
> quit
[root@server1 ~]# cat file
hello
- 11. 4、管道管道是Linux中很重要的一种通信方式,它是把一个程序的输出直接连接到另一个程序的输入。
常说的管道一般是指无名管道(例如“|”),无名管道只能用于具有”亲缘”关系进程之间的通信。
使用“ | ”将前一个进程的输出直接送入后一个进程的输入。
例:ls -l | head -100
允许多重管道
例:ls –l | head -100 | more
- 12. 5、综合应用cat file1 > file2
拷贝file1到file2
cat file1 file2 file3 > fileall
将数个小文件合并成一个文件
ls –l | more
分屏显示当前目录下的文件
- 13. 练习创建文件file1,并输入内容。
将当前的系统日期追加在file1文件之后。
date
分别输入一个正确与错误的指令,并将正确的输出结果保存在rigth文件中,将错误的信息保存在wrong文件中。
通过管道来显示“ls -l” 指令执行结果的前4行。
- 14. 结束
The End
Thanks