数据流重定向与管道命令

上传人:洪易 文档编号:40634600 上传时间:2018-05-26 格式:DOCX 页数:4 大小:26.30KB
返回 下载 相关 举报
数据流重定向与管道命令_第1页
第1页 / 共4页
数据流重定向与管道命令_第2页
第2页 / 共4页
数据流重定向与管道命令_第3页
第3页 / 共4页
数据流重定向与管道命令_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据流重定向与管道命令》由会员分享,可在线阅读,更多相关《数据流重定向与管道命令(4页珍藏版)》请在金锄头文库上搜索。

1、一、一、 数据流重定向数据流重定向 数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其 他的地方,例如文件或者是设备(例如打印机之类的) 。 1、standard output 与 standard error output (标准输出与标准错误输出) 。 (1) 标准输出指的是命令执行所回传的正确的信息,而标准错误输出可 理解为命令执行失败后,所回传的错误信息。 (2) 数据流重定向可以将 standard output(简称 stdout)与 standard error output(简称 stderr)分别传送到其他的文件或者设备,而分别传送 到所用的特殊字符则如下所示:

2、 -标准输入(stdin):代码为 0,使用或; -标准错误输出(stderr):代码为 2,使用 2或 2 范例: ll / /rootfile -屏幕并无任何信息,因为所显示的数据(根目录下 的信息)已经被重新导向到/rootfile 文件中了(同时,若 rootfile 文件不存在, 系统会自动创建它;若存在,则系统就会先将这个文件内容清空,然后将数据 写入) cat /rootfile -查看数据 ll /home /rootfile -rootfile 文件的内容被/home 里面的内容覆 盖了ll /home /rootfile -把/home 里的内容追加到 rootfile 文

3、件中 (若文件不存在,系统会自动创建文件)(3) 标准错误输出(stderr)也是一样的道理:范例:find /home name .bashrc-当用一般用户的身份执行时,由于权限的问题 可能会产生一些错误信息.如:find:/home/lost+found:Permission denied -Standard errorfind:/home/alex: Permission denied - Standard errorfind:/home/arod: Permission denied - Standard error/home/dmtsai/.bashrc -Standard out

4、putfind /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- -将正确与与错

5、误数据通通写入同一个文件中2、 catfile TestingCat file test -按 ctrl+d 离开,Testing Cat file test 就写入文件 catfile 了,用 cat catfile 可 以看到 cat catfile catfile catfile eof this is a test. OK now stop date -当date这里用反撇号时,执行 cat catfile 的时候这行显示的是当前系 统时间, 相当一个命令 eof 3、 ;,;,&,|(1)cmd;cmd (不考虑命令相关性的连续命令执行) (2)$?(命令回传码)与&或| 两个命令之

6、间是有相依性而这个相依性主要判断的地方就在于前一个命令执行 的结果是否正确(正确回传一个$?=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 -如果

7、/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、

8、管道|,|& 用“|”或“|&”隔开的两个命令之间形成了一个管道,左边命令的标准输出 (用“|”连接)或者标准错误输出(用“|&”连接)信息流入到右边命令的标准输入,即左边命令的标准输出作为右边命令的标准输入。 每个管道后面接的第一个数据必定是“命令” ,而且这个命令必须要能够接收 standard input 的数据才行,这样才可以是“管道命令” ,例如 less,more,head,tail 等。至于例如 ls,cp,mv 等就不是管道命令了。2、选取命令:cut,grep cut主要的用途在于将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候。 echo $PATH |

9、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,输出的结果将不会是我们

10、想要的。 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

11、内含MANPATH 的那几行,而且找到的关键字部分会用特殊颜色显示(有些系统 不加也会显示特殊颜色) 3、排序命令:sort,wc,uniq Sort是很有趣的命令,它可以帮助我们进行排序,而且可以依据不同的数据类型来排序。例如数字与文字的排序就不一样。此外排序的字符与语系的 编码有关,因此如果你需要排序时,建议使用 LANG=C 来让语系统一,数据 排序不较好一些。 cat /etc/passwd | sort -这里是 sort 默认“以第一个“数据来排序,而且默认 是以”文字“类型来排序的,所以由 a 开始排到最后cat /etc/passwd | sort t :-k 3 -(/etc

12、/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 -取出来的列前面会显示每个账

13、号出现的次数 wc计算某个文件里面有多少字-w(单词)?多少字符-m?多少行-l?cat /etc/man.config | wc -分别显示出行数,字数,字符数 last | grep a-zA-z | grep v wtmp | wc l -由于 last 会输出空白行与 wtmp 字样在最下面两行,因此利用 grep 取出非空白行,以及去除 wtmp 那一行, 再计算行数 4、双向重定向:tee tee可以让 standard output 转存一份到文件内并将同样的数据继续送到屏幕去处理。 last | tee last.list | cut d -f 1 -将 last 的输出全部存一份到 last.list 文件 中屏幕上只输出账号(第一列) ls l /home | tee /homefile | more-将 ls 的数据存一份到/homefile,同时屏 幕也有输出信息 ls l /home | tee a /homefile | more-tee 后接的文件会被覆盖,若加上-a 这个参数则能将信息累加

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号