《复重定向与管道--3.ppt》由会员分享,可在线阅读,更多相关《复重定向与管道--3.ppt(17页珍藏版)》请在启牛文库网上搜索。
1、重定向和管道重定向和管道 薛卫薛卫1PanUnix设计准则每个程序只完成一件事情当需要新的工具时,最好是对现有工具进行组合长长的长长的Dmesg输出输出2PanUnix准则的得失相似的工具很多工具功能满足不了需求基于文本的工具无法处理多媒体3Pan 1、在Unix系统下需要编译一个比较大的程序,估计要20分钟。在编译过程中可能会出现一些警告或者错误信息。系统工程师不可能这二十分钟都盯着 屏幕看。为此系统工程师希望shell能够把这这些编译过程中出现的警告或者错误信息能够保存在一个文件中,以供系统工程师或者程序开发人员后续查询所 用。2、在开发程序的时,有时候是根据代码的行数来收费的,在Unix
2、系统中开发应用程序也是如此。为此系统工程师也希望能够有工具能够方便的来统计某个程序文件的行数。3、有时候系统管理员可能希望能够把几个文本文件合并起来。虽然通过复制、粘贴可以实现类似的功能。但是当需要被合并的文件比较多的时候,通过赋值粘贴来实现合并的目的,并不是很好的处理方法。等等。4Pan重定向输出用符号将命令输出写到文件Dmesg file(覆盖式)防止覆盖 set o noclobber (设置) set +o noclobber (取消)强制覆盖Dmesg |fileDmesg file(追加式)5Pan重定向输入使用 操作符从文件重定向 stdin Sort namesSort rep
3、ort6Pan文件描述符、标准错误Unix中每个输入、输出源都由一个数字描述文件描述符。三种系统文件描述符:0(输入)、1(输出)、2(错误)标准的重定向格式: command 文件描述符 定向符 filenamen 原来是输出到文件描述符 n,被重定向到文件filename。以输入为例 sort 0rawdata sort errorsSort 0results 2 errors8Pan组合标准输出、错误语法:Command x outfile y&x将一种类型的输出重定向到一个文件,然后再将另一种类型的输出重定向到同一位置。执行顺序:自左向右Sort 1output 2&1Sort 2&1
4、 1output9Pan组合标准输出、错误10Pan抛弃输出有时候可能想要完全忽略标准输出或标准错误,可以使用 /dev/null 忽略输出 Ls /dev/null 11Pan抛弃输出Update /dev/null下面举例说明:#cat std.sh#!/bin/shecho “stdout”echo “stderr” &2#/bin/sh std.sh 2&1 /dev/nullstderr#/bin/sh std.sh /dev/null 2&1第一条命令的输出结果是stderr,因为stdout和stderr合并后一同重定向到/dev/null,但stderr并未被清除,因此仍将在屏
5、幕 中显示出来;第二条命令无输出,因为当stdout重定向至/dev/null后,stderr又重定向到了stdout,这样stderr也被输出到了 /dev/null。 12Pan管道线一个程序的标准输出可以自动发往另外一个程序的标准输入Cat file1 file2 | sortCal 2008 | less使用使用无效无效13Pan管道线分流输入保存并输出管道线分流命令: tee -a file例:Cat file1 file2 | sort1、Cat file1 file2 | tee d1 | sort2、Cat file1 file2 | tee d1 d2 | sort3、Cat file1 file2 | tee -a d1 | sortd1末尾追加文件末尾追加文件14Pan管道和重定向区别管道和重定向区别 左边的命令应该有标准输出 | 右边的命令应该接受标准输入左边的命令应该有标准输出 右边只能是文件左边的命令应该需要标准输入 contact前一条命令失败时执行另一条命令 语法:command1 | command216Pan重定向符号重置I/O及错误2&1重定向错误输出n将输出从文件描述符 n 重定向到文件。P323表表17