UNIX课件八:重定向.ppt
,第七章 重定向与管道,重定向与管道,标准文件概述输入与输出重定向标准错误重定向UNIX管道,标准文件,标准文件shell为每个命令打开三个文件(流),用于读取输入标准输入键盘输出结果标准输出显示屏(控制台)输出错误消息标准错误显示屏(控制台)当shell发现命令行中存在特殊字符(,|)时,shell就把流从它的默认设备上断开,连接到磁盘文件或另一个命令。,重定向与管道,标准文件概述输入与输出重定向标准错误重定向管道,1、输入重定向,当命令后不带 任何参数时,它从标准输入文件中读取数据。该文件可以代表三个输入源:键盘,默认输入源文件,要用 重定向符其他命令,要用|(管道符)例子:wc不带参数时,也没有和 或|特殊字符连接时,wc就从默认设备(键盘)获取输入wc hello,how are you?Im fine.ctrl+d,1、输入重定向,语法command input file语义如果command从标准输入读取输入,则该输入来自于input file,而不是键盘例wc tmp:shell扫描到 符号时,就打开tmp文件,然后shell断开标准输入的默认源,把它连接到tmp文件,cat命令从标准输入读取数据,标准输入已经由shell重定向到tmp文件wc tmp:wc命令打开tmp文件,读取数据显示到屏幕上。,1、输入重定向,!注意:当标准输入重定向到一个文件时(用),shell打开此文件,而命令不会知道shell为他的输入所做的一切。但是如果命令后面跟一个文件名作为参数,则由命令自己打开文件,shell不管此文件的打开。同时从文件和标准输入读取数据必须用“-”符号如:cat aa-bb/cat先打开aa,显示,然后从标准输入读数据,ctrl+d,打开bb,显示。cat aa-bb/显示什么?,2、输出重定向,类似输入重定向,结果输出到屏幕上的命令,实质是把结果以字符流的形式输出到标准输出文件里,而不是直接输出到终端上。输出流有三个目标对象:终端,默认目标文件,用 或 重定向来自于另一个命令的输入,用管道符|说明:是在文件末尾添加,2、输出重定向,语法:command output file语义:将命令command的输出发送到文件output file,而不是屏幕例datedate apple/当shell扫描到符号时,创建一个新文件apple为写入做准备;然后shell断开标准输出文件的默认目标设备,并连接到apple文件;date把结果写入到已重定向到apple文件的标准输出。!不要覆盖文件:重定向输出到一个文件时要小心,确信文件名不存在,否则将被覆盖!,3、带文件描述符的重定向,三个标准文件都对应一个称为文件描述符的数字代码。当文件打开进行读写操作则需要用到文件描述符。标准文件描述符:0:标准输入1:标准输出2:标准错误重定向与文件描述符使用可以显式说明重定向等价于1,表示输出重定向 如:cat aa 1 bb 与 cat aa bb 一样的意思2,显式指定错误重定向,重定向与管道,标准文件概述输入与输出重定向标准错误重定向UNIX管道,1、标准错误重定向,标准错误重定向command 2 error-file命令的错误信息与普通返回区分标准错误重定向将错误信息单独输出例cat foocat:foo:no such file or directorycat foo errorcat:foo:no such file or directory/可见,错误信息并没有保存到error文件cat foo 2errorcat error,2、重定向标准输出与标准错误,标准输出与标准错误可以重定向到同一个文件中ls/etc res.log 2res.log很多时候需要分开ls/etc 1 res.log 2 err.log,3.连接标准输入和标准输出的过滤器,unix命令分为四种:既不需要标准输入,也不需要标准输出的命令:如mkdir,cd,cp,mv不从标准输入读取数据,但把结果写入到标准输出,如:ls,pwd,who从标准输入读取数据,但不把结果写入到标准输出,如:lp既从标准输入读取数据,也使用标准输出,如:cat,wc,od,gzip。这一类UNIX中称为过滤器。由于过滤器具有双重流处理功能,因此他们是功能强大的文本处理器,可以极大提高性能。,实例,例:从文件input得到标准输入,并发送输出到result文件,可以使用下列任意命令:cat result resultcatresult result input cat输入源和输出目标在一个命令行中的次序和位置并不重要,以及他们前后的空格个数并没有严格限制。这正是UNIX系统最强大的功能之一。,重定向实例练习,#cat aa bb cc#cat aa bb#cat calc 3*8 33+44 ctrl+d#bc out#cat out6.#catt aa 2/dev/null 7.#cat aa/按下回车后,用ctrl+c中断,重定向实例练习,/dev/null like a black hole.Whatever 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/null,重定向与管道,标准文件概述输入与输出重定向标准错误重定向UNIX管道,1、管道概述,标准输入和标准输出是shell可以单独使用的两个独立流。shell把这两个流连接起来,让一个命令的输出作为另一个命令的输入,就是管道。管道可以在命令行上组装出专门的程序管道按次序把命令连接起来,前一个命令的输出作为后一个命令的输入缺点:像是黑箱子。如果把命令连接在一起,那么只有序列中最后一个命令生成的输出能够反映管道的进度 管道符号:|,2、管道连接两个进程,3、管道连接命令,4、管道使用示例,ls/etc|lessls l|wcps-A|grep n gnome gnome.countcat gnome.count,试验安排,下周一(4/23)试验4 高级文件处理和重定向试验,