《字符界面进阶-重定向和管道.ppt》由会员分享,可在线阅读,更多相关《字符界面进阶-重定向和管道.ppt(15页珍藏版)》请在三一办公上搜索。
1、第3章 字符界面操作进阶,本章目标,Linux数据流,标准的I/Ostdin标准输入,命令的默认输入位置stdout标准输出,命令的默认输出位置stderr标准的错误输出,命令的另一个输出位置,用于输出错误和各种诊断信息这三种流可以想像成一个有3个元素的数组,stdin,stdout,stderr分别对应0,1,2,Linux数据流,Standard I/Ostdin 就是从键盘输入的字符标准的输出会显示在终端屏幕上标准的错误输出也会显示在终端屏幕上,重定向改变默认的数据流位置,重定向可以改变一个命令的标准输入或输出,使输出的结果不显示在终端屏幕上,而是存入文件中标准输出重定向:在命令的末尾添
2、加:filename eg:#ls a/data特点:实际执行命令前,命令解释程序(shell)会自动打开(如果文件不存在则自动创建)且清空文件内容(文件中已有数据将被删除)。Cat的特殊用法(新建并编辑文件):cat file1 hello!d,重定向改变默认的数据流位置,重定向Stderr也是显示到终端,但他和stdout是不同的流,当重定向stdout后,stderr仍输出到终端可以通过 2filename来重定向stderr流Eg:#rm mydir/2errs可以把错误信息重定向到errs文件中。&将把错误信息及标准信息重定向到一个文件中,重定向,Redirection/dev/nu
3、ll空设备/dev/null,作为输入时仅产生一个文件结束符(no data),做为输出时,丢弃所有数据空设备的一个典型用法就是丢弃从 grep or find等命令送来的错误信息.$grep“delegate”/etc/*2/dev/null 我们可以只在屏幕上看到有用的输出。,重定向,Redirection输入重定向标准输入流也可以重定向到文件而不是键盘从一个文件重定向标准输入允许事先输入所有要求输入的信息,检查并更正错误,同时还可以重复利用这些信息,对于较长的输入比较有利。重定向标准输入的方法:filename对于stderr,2filename,管道命令,命令简单命令$date复杂命令
4、$ls l/who为命令,am 和 i 为参数复合命令$date;ls l/每条命令按顺序执行管道符|;一条命令的结束,另一条命令的开始,Pipes and Filters管道和过滤器,管道允许一系列进程的输入输出流连接在一起,而将这些命令连接成为管道管道可以连接2个以上命令,通过过滤器服务程序,多级管道在linux中是非常常见的过滤程序应用于管道,从而实现对管道的过滤,管道命令,Pipes管道如果用户希望通过一个命令来处理另一个命令的输出,可以通过重定向来完成。先重定向到一个临时文件,再把临时文件做为另一命令的输入。who命令显示当前系统已登录用户信息wc 统计文件中的单词、行和字符,-w
5、l c 可看单词、行、字符的数目$wc w filename把这2个命令用重定向的方法结合起来使用:$who tmpfile$wc l tmpfile,管道命令,Pipes管道通过管道符|,我们就可以把以上命令写为一个$who|wc l管道符告诉shell 将左边的命令输出做为右边命令的输入管道是shell在命令执行前建立起来的过滤器只是一段程序,它从自己标准输入流读入数据,然后写到自己标准输出流中,这样就可以沿着管道过滤数据。,管道示例:,$who|grep“ttyp“|wc l 假设who命令显示信息中“ttyp”字段代表网络登录,那么就可以统计出当前系统中网络用户人数,$who tmpf
6、ile1 统计当前登陆系统的用户信息(一行一名用户信息)$grep“ttyp”tmpfile1 tmpfile2 刷选出文本中含有匹配字符的行$wc l tmpfile2 统计行数,管道命令,Filters tee截获中间命令运行结果时,tee命令非常有用 tee命令将管道的输出结果送到标准输出及指定文件中。$who|tee a tmpfile|grep”ttyp“|wc l 把who的输出送到c文件中,-a 代表添加模式,而非清空模式。,作业,请写出以下命令含义,然后已重定向方式实现同样的功能:$ls-l/usr/bin|more$ls-l/usr/bin|wc l$ls-1/usr/bin|grep root|more$ls-l/usr/bin|tee lsbin|grep root|more$ls-l/user/bin|grep root|tee lsbin|more,