数据流重定向与管道命令.docx_第1页
数据流重定向与管道命令.docx_第2页
数据流重定向与管道命令.docx_第3页
数据流重定向与管道命令.docx_第4页
全文预览已结束

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 数据流重定向数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他的地方,例如文件或者是设备(例如打印机之类的)。1、 standard output 与 standard error output (标准输出与标准错误输出)。(1) 标准输出指的是命令执行所回传的正确的信息,而标准错误输出可理解为命令执行失败后,所回传的错误信息。(2) 数据流重定向可以将standard output(简称stdout)与standard error output(简称stderr)分别传送到其他的文件或者设备,而分别传送到所用的特殊字符则如下所示:-标准输入(stdin):代码为0,使用或或;-标准错误输出(stderr):代码为2,使用2或2范例:ll / /rootfile -屏幕并无任何信息,因为所显示的数据(根目录下的信息)已经被重新导向到/rootfile文件中了(同时,若rootfile文件不存在,系统会自动创建它;若存在,则系统就会先将这个文件内容清空,然后将数据写入)cat /rootfile -查看数据ll /home /rootfile -rootfile文件的内容被/home里面的内容覆盖了 ll /home /rootfile -把/home里的内容追加到rootfile文件中(若文件不存在,系统会自动创建文件) (3) 标准错误输出(stderr)也是一样的道理: 范例: find /home name .bashrc-当用一般用户的身份执行时,由于权限的问题可能会产生一些错误信息.如: find:/home/lost+found:Permission denied -Standard error find:/home/alex: Permission denied - Standard error find:/home/arod: Permission denied - Standard error /home/dmtsai/.bashrc -Standard output find /home name .bashrc list_right 2 list_error -屏幕上不会出现任何信息;因为错误信息和正确信息分别存到了list_right和list_error文件中 find /home name .bashrc 2 /dev/null -/dev/null垃圾桶黑洞设备,可以吃掉任何导向这个设备的信息,即相当于把错误信息忽略掉而不显示或存储,屏幕上只显示stdout信息(特殊写法): find /home name .bashrc list 2&1 或 find /home name .bashrc & list-将正确与与错误数据通通写入同一个文件中 2、与 (由于加入、在cat后,所以,如果文件不存在都会自动创建) catfile TestingCat file test-按ctrl+d离开,Testing Cat file test就写入文件catfile了,用cat catfile可以看到cat catfile catfile “eof”this is a test.OK now stopeof -利用 catfile eofthis is a test.OK now stopdate -当date这里用反撇号时,执行cat catfile 的时候这行显示的是当前系统时间, 相当一个命令eof 3、;,&,|(1)cmd;cmd (不考虑命令相关性的连续命令执行)(2)$?(命令回传码)与&或|两个命令之间是有相依性而这个相依性主要判断的地方就在于前一个命令执行的结果是否正确(正确回传一个$?=0的值)命令执行情况说明cmd1 & cmd2若cmd1执行完毕且正确执行($?=0),则开始执行cmd2,否则cmd2不执行cmd1 | cmd2若cmd1执行完毕且正确执行($?=0),则cmd2不执行;否则开始执行cmd2 ls /tmp/abc & touch /tmp/abc/hehe -如果/tmp/abc不存在时,touch就不会执行,若存在,那么touch就会开始执行ls /tmp/abc | mkdir /tmp/abc/hehe -如果/tmp/abc不存在时,那么就会执行mkdir,若存在,那么mkdir就不会执行当不清楚/tmp/abc是否存在,但就是要创建/tmp/abc/hehe文件时,可以这样执行:ls /tmp/abc | mkdir /tmp/abc/hehe & touch /tmp/abc/hehe 例题:(P333)以ls测试/tmp/vbirding是否存在,若存在则显示“exist”,若不存在,则显示“not exist”。答:ls /tmp/vbirding & echo “exist” | echo “not exist”二、 管道命令(pipe)1、 管道|,|&用“|”或“|&”隔开的两个命令之间形成了一个管道,左边命令的标准输出(用“|”连接)或者标准错误输出(用“|&”连接)信息流入到右边命令的标准输入,即左边命令的标准输出作为右边命令的标准输入。每个管道后面接的第一个数据必定是“命令”,而且这个命令必须要能够接收standard input的数据才行,这样才可以是“管道命令”,例如less,more,head,tail等。至于例如ls,cp,mv等就不是管道命令了。2、 选取命令:cut,grepcut主要的用途在于将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候。echo $PATH | cut d : f 5 - 在执行echo $PATH所显示的数据中以:作为分隔符,输出(每行)第五个数据。echo $PATH | cut d : f 3,5 -列出第三与第五的数据。export | cut c 12- -每行都从第十二个字符开始输出;如果要输出第12-20的字符,就是cut c 12-20等。last -显示登录者的信息last | cut d f 1 -以空白作为分隔符,输出第一段(即账号列),但是因为root pts/1之间有好几个空格,并非仅有一个,所以如果要找出pts/1其实不能以cut d -f 1,2,输出的结果将不会是我们想要的。grep是一个很棒的命令。它支持的语法实在是太多了,用在正则表达式里头,能够处理的数据实在是很多;grep可以解析一行文字,取得关键字,若该行有存在关键字,就会整行列出来。last | grep root-将last当中出现root的那一行就取出来last | grep v root-以上述相反,只要没有root的就取出来last | grep root| cut d -f 1 - 在last的输出信息中,只要有root的就取出,并且仅取第一列grep color=auto MANPATH /etc/man.config -取出/etc/man.config内含MANPATH的那几行,而且找到的关键字部分会用特殊颜色显示(有些系统不加也会显示特殊颜色)3、 排序命令:sort,wc,uniqSort是很有趣的命令,它可以帮助我们进行排序,而且可以依据不同的数据类型来排序。例如数字与文字的排序就不一样。此外排序的字符与语系的编码有关,因此如果你需要排序时,建议使用LANG=C来让语系统一,数据排序不较好一些。cat /etc/passwd | sort -这里是sort默认“以第一个“数据来排序,而且默认是以”文字“类型来排序的,所以由a开始排到最后cat /etc/passwd | sort t :-k 3 -(/etc/passwd内容是以:来分隔的)以:为分隔符的第三列进行排序,但是还是以文字类型来排序(第3列是数字)cat /etc/passwd | sort t :-k 3 n-加个-n就会以数字来排序last | cut d -f 1 | sort -利用last将输出的数据仅取账号,并加以排序uniq这个命令是用来将重复的行删除掉显示一个(一般要经过配合排序过的文件)last | cut d f 1 | sort | uniq -将last的内容列出,仅取出账号列,进行排序后后仅取出一位last | cut d f 1 | sort | uniq c -取出来的列前面会显示每个账号出现的次数wc计算某个文件里面有多少字-w(单词)?多少字符-m?多少行-l?cat /etc/man.config | wc -分别显示出行数,字数,字符数last | grep a-zA-z | grep v wtmp | wc l -由于last会输出空白行与wtmp字样在最下面两行,因此利用grep取出非空白行,以及去除wtmp那一行,再计算行数4、 双向重定向:teetee可以让standard output转存一份到文件内并将同样的数据继续送到屏幕去处理。last |

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论