《UNIX课件八:重定向.ppt》由会员分享,可在线阅读,更多相关《UNIX课件八:重定向.ppt(23页珍藏版)》请在金锄头文库上搜索。
1、第七章第七章 重定向与管道重定向与管道Unix系系统统管管理理重定向与管道重定向与管道标准文件概述标准文件概述输入与输出重定向输入与输出重定向标准错误重定向标准错误重定向UNIX管道管道Unix系系统统管管理理标准文件标准文件标准文件标准文件shell为每个命令打开三个文件(流),用于为每个命令打开三个文件(流),用于读取输入读取输入标准输入标准输入键盘键盘输出结果输出结果标准输出标准输出显示屏(控制台)显示屏(控制台)输出错误消息输出错误消息标准错误标准错误显示屏(控制台)显示屏(控制台)当当shell发现命令行中存在发现命令行中存在特殊字符特殊字符(,|)时,)时,shell就把流从它的默
2、认设备上断开,连接到磁盘文就把流从它的默认设备上断开,连接到磁盘文件或另一个命令。件或另一个命令。Unix系系统统管管理理重定向与管道重定向与管道标准文件概述标准文件概述输入与输出重定向输入与输出重定向标准错误重定向标准错误重定向管道管道Unix系系统统管管理理1、输入重定向、输入重定向当命令后不带当命令后不带 任何参数时,它从标准输入文件中读任何参数时,它从标准输入文件中读取数据。该文件可以代表三个输入源:取数据。该文件可以代表三个输入源:键盘,默认输入源键盘,默认输入源文件,要用文件,要用 重定向符重定向符其他命令,要用其他命令,要用 |(管道符)(管道符)例子:例子:wc不带参数时,也没
3、有和不带参数时,也没有和 或或|特殊字符连接特殊字符连接时,时,wc就从默认设备就从默认设备(键盘键盘)获取输入获取输入wc hello, how are you? Im fine.ctrl+dUnix系系统统管管理理1、输入重定向、输入重定向语法语法command input file语义语义如果如果command从标准输入读取输入,则该输入来自从标准输入读取输入,则该输入来自于于input file,而不是键盘,而不是键盘例例wc tmp: shell扫描到扫描到 符号时,就打开符号时,就打开tmp文件,文件, 然后然后shell断开标准输入的默认源,把它连接到断开标准输入的默认源,把它连
4、接到tmp文文件,件,cat命令从标准输入读取数据,标准输入已经由命令从标准输入读取数据,标准输入已经由shell重定向到重定向到tmp文件文件wc tmp:wc命令打开命令打开tmp文件,读取数据显示到屏文件,读取数据显示到屏幕上。幕上。Unix系系统统管管理理1、输入重定向、输入重定向!注意:!注意: 当标准输入重定向到一个文件时当标准输入重定向到一个文件时(用用) ,shell打开此文打开此文件,而命令不会知道件,而命令不会知道shell为他的输入所做的一切。为他的输入所做的一切。但是如果命令后面跟一个文件名作为参数,则由命但是如果命令后面跟一个文件名作为参数,则由命令自己打开文件,令自
5、己打开文件,shell不管此文件的打开。不管此文件的打开。同时从文件和标准输入读取数据同时从文件和标准输入读取数据必须用必须用“-”符号符号如:如:cat aa - bb /cat先打开先打开aa,显示,然后,显示,然后从标准输入读数据,从标准输入读数据,ctrl+d, 打开打开bb,显示。,显示。 cat 或或 重定向重定向来自于另一个命令的输入,用管道符来自于另一个命令的输入,用管道符|说明:说明: 是在文件末尾添加是在文件末尾添加Unix系系统统管管理理2、输出重定向、输出重定向语法语法: command output file语义:语义:将命令将命令command的输出发送到文件的输出
6、发送到文件output file,而不是屏幕,而不是屏幕例例datedate apple /当当shell扫描到扫描到符号时,创建一符号时,创建一个新文件个新文件apple为写入做准备;然后为写入做准备;然后shell断开标准输断开标准输出文件的默认目标设备,并连接到出文件的默认目标设备,并连接到apple文件;文件;date把结果写入到已重定向到把结果写入到已重定向到apple文件的标准输出。文件的标准输出。 !不要覆盖文件:!不要覆盖文件:重定向输出到一个文件时要小心,重定向输出到一个文件时要小心,确信文件名不存在,否则将被覆盖确信文件名不存在,否则将被覆盖! Unix系系统统管管理理3、
7、带文件描述符的重定向、带文件描述符的重定向三个标准文件都对应一个称为文件描述符的数字三个标准文件都对应一个称为文件描述符的数字代码。当文件打开进行读写操作则需要用到文件代码。当文件打开进行读写操作则需要用到文件描述符。标准文件描述符:描述符。标准文件描述符:0:标准输入:标准输入1:标准输出:标准输出2:标准错误:标准错误重定向与文件描述符使用可以显式说明重定向重定向与文件描述符使用可以显式说明重定向等价于等价于0等价于等价于1,表示输出重定向,表示输出重定向 如:如:cat aa 1 bb 与与 cat aa bb 一样的意思一样的意思2,显式指定错误重定向,显式指定错误重定向Unix系系统
8、统管管理理重定向与管道重定向与管道标准文件概述标准文件概述输入与输出重定向输入与输出重定向标准错误重定向标准错误重定向UNIX管道管道Unix系系统统管管理理1、标准错误重定向、标准错误重定向标准错误重定向标准错误重定向command 2 error-file命令的错误信息与普通返回区分命令的错误信息与普通返回区分标准错误重定向将错误信息单独输出标准错误重定向将错误信息单独输出例例cat foocat:foo:no such file or directorycat foo errorcat:foo:no such file or directory /可见,错误信息并没可见,错误信息并没有保
9、存到有保存到error文件文件cat foo 2errorcat errorUnix系系统统管管理理2、重定向标准输出与标准错误、重定向标准输出与标准错误标准输出与标准错误可以重定向到同一个文件中标准输出与标准错误可以重定向到同一个文件中ls /etc res.log 2res.log很多时候需要分开很多时候需要分开ls /etc 1 res.log 2 err.logUnix系系统统管管理理3. 连接标准输入和标准输出的过滤器连接标准输入和标准输出的过滤器unix命令分为四种:命令分为四种:既不需要标准输入,也不需要标准输出的命令:如既不需要标准输入,也不需要标准输出的命令:如mkdir,
10、cd , cp,mv不从标准输入读取数据,但把结果写入到标准输出,不从标准输入读取数据,但把结果写入到标准输出,如:如:ls ,pwd, who从标准输入读取数据,但不把结果写入到标准输出,从标准输入读取数据,但不把结果写入到标准输出,如如:lp既从标准输入读取数据,也使用标准输出,如:既从标准输入读取数据,也使用标准输出,如:cat,wc,od,gzip。这一类。这一类UNIX中称为过滤器。中称为过滤器。由于过滤器具有双重流处理功能,因此他们是功能由于过滤器具有双重流处理功能,因此他们是功能强大的文本处理器,可以极大提高性能。强大的文本处理器,可以极大提高性能。Unix系系统统管管理理实例实
11、例例:例:从文件从文件input得到标准输入,并发送输出到得到标准输入,并发送输出到result文文件,可以使用下列任意命令:件,可以使用下列任意命令:cat result inputcat resultcatresult result cc2.#cat aa bb3.#cat calc 3*8 33+44 ctrl+d #bc out #cat out6. #catt aa 2 /dev/null 7. #cat aa /按下回车后,用按下回车后,用ctrl+c中断中断Unix系系统统管管理理重定向实例练习重定向实例练习 /dev/null like a black hole. Whatev
12、er is sent to the /dev/null never returns. Neither does one know where it goes. It simple disappears. Isnt that fantastic ! So remember. whenever you want to remove something. something that you dont want .you could just send it to /dev/nullUnix系系统统管管理理重定向与管道重定向与管道标准文件概述标准文件概述输入与输出重定向输入与输出重定向标准错误重定向
13、标准错误重定向UNIX管道管道Unix系系统统管管理理1、管道概述、管道概述标准输入和标准输出是标准输入和标准输出是shell可以单独使用的两个可以单独使用的两个独立流。独立流。shell把这两个流连接起来,让一个命令把这两个流连接起来,让一个命令的输出作为另一个命令的输入,就是的输出作为另一个命令的输入,就是管道管道。管道可以在命令行上组装出专门的程序管道可以在命令行上组装出专门的程序管道按次序把命令连接起来,前一个命令的输出作为后管道按次序把命令连接起来,前一个命令的输出作为后一个命令的输入一个命令的输入缺点:像是黑箱子。如果把命令连接在一起,那么只有缺点:像是黑箱子。如果把命令连接在一起,那么只有序列中最后一个命令生成的输出能够反映管道的进度序列中最后一个命令生成的输出能够反映管道的进度 管道符号:管道符号:|Unix系系统统管管理理2、管道连接两个、管道连接两个进程进程Unix系系统统管管理理3、管道连接命令、管道连接命令Unix系系统统管管理理4、管道使用示例、管道使用示例ls /etc | lessls l | wcps -A | grep n gnome gnome.countcat gnome.countUnix系系统统管管理理试验安排试验安排下周一下周一(4/23) 试验试验4 高级文件处理和重定向试验高级文件处理和重定向试验