- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
我回电脑报论坛来,说实话,就是为了打发时间的。 魔兽没动力了,人人没意思了,糗百堕落了。回 来凑凑热闹而已。这几天比较闲,居然写上瘾了。前后时间比较长,这几天忙了, 也因为举实际例子
要慢慢想
个人主页:
/ --- 进去帮忙点广告啊,哈哈哈哈哈
本文纯属原创,转载注明出处和作者
重定向、管道和xargs命令都是在命令之间传递数据的方式。 Linux的最初的理念就是 KISS, Keep It
Simple, Stupid!的缩写。命令行命令都只做一样事情,但是要完成得非常岀色。给我最深刻印象是tar 命令。tar命令的目的只是将几个文件连接在一起组成一个大文件而已。而压缩的程序只能压缩单个 文件。肯定有人会有疑问,tar命令的-z和-j之类的参数也可以压缩啊。其实 tar本身没有压缩代码,
tar是通过调用外部的gzip、bzip2之类的压缩命令来完成工作的。 KISS的理念得到了广泛的支持。
好多Linux命令都只会做一件事情。而复杂的事情则需要通过各种命令的组合来完成。各命令之间的 通信,除了中间临时文件以外,Linux还提供了管道来完成直接的数据传输。 重定向可以将标准输入、
标准输入或标准错误重定向到文件或设备(这里涉及到Linux另外一条设计理念,就是一切都是文件, 设备都是文件)。xargs可以将标准输入的内容转变成命令的命令行参数。
重定向
在讲重定向之前,我想说说什么叫标准输入, 标准输岀和标准错误。在Linux里,进程间通信(IPC) 最基本的一种方法是通过管道(其他还有消息、共享内存等)。管道就像流水线一样,单向的, 不用
关心管道另外一边是谁。系统给每一个命令行程序默认三条管道与用户交互,就是标准输入,标准输 岀和标准错误。标准输入指的是用户按键盘给程序输入数据。 标准输岀是指程序正常打印给用户的信
息,是打印到shell上的。标准错误跟标准输岀在本质上是相同的, 都是输岀信息给用户。不同的是,
两个管道是分开的,可以用来打印不同种类的信息,比如说标准错误通常用来打印错误信息。因为使 用管道不用关心另外一边是谁,所以把管道接到别的地方,程序也不会知道。 Linux用了这种特性来
实现了管道的重定向。
默认情况,三个默认管道是跟用户交互的。 因为在Linux下,每个命令都只做一件事情。 有些情况下,
用户想让程序跟程序之间交互通过默认管道交互, 比如说想把一个命令的输岀接到另外一个命令的输
入里面。重定向的方法如下:
file name,重定向标准输岀到文件,覆盖文件。
file name ,重定向标准输岀到文件,追加模式。
2 file name,重定向标准错误到文件。
file name ,重定向标准输入和标准错误到文件。 相当于同时使用 和2。(感谢yszzf友情提供)
file name,重定向标准输入自文件
举个例子,在用find的时候,有的目录不允许访问,find就输岀很多行的错误,真正的搜索结果就看
不到了。这时我会把标准错误重定向到空设备去。
复制代码
1. find / -name filename 2 /dev/null
再比如在用gdb进行自动测试的时候,把命令写到一个文件里,然后送入 gdb。
复制代码
1. gdb program test_script.gdb
管道
管道的原理上面基本介绍清楚了。管道是让用户将不同程序间的标准输入、 标准输岀连接起来,而不
单单是重定向到文件。用法是在命令间用 “ I连接起来。
appl | app2
我最常用的几个情况:
程序输岀太多,用less慢慢看。
1. verbose_app | less
复制代码
在程序输岀里面进行搜索。一种方法可以送到less里面在用less搜索。这里用另外一个命令,grep。 verbose_app | grep patter n
# pattern是被搜索的内容。如果有空格,用双引号括起来。如果想使用扩展正则表达式,用grep -E。
因为在重定向了以后,被重定向的管道就不再打印到屏幕了。如果又想打印到文件,又想打印到 屏幕,可以用tee命令
verbose_app | tee file name | ano ther_app
xargs
如果后面的程序必须要命令行参数,而不接受管道传参数,就要使用 xargs。
先演示一下原理。
echo arg1 arg2 | xargs app
#相当于
app arg1 arg2
用find或者ls查找文件,然后将所有文件 tar 了。
find . -type f | xargs tar -cvzf output.tar.gz
计算源文件行数。这里要用到一个叫 wc的命令,是用来计算文件单词数、字符数和行数的。 如果
管道到wc的话,wc会将数据当
您可能关注的文档
- KSZ62075B隧道式灭菌干燥机2确认方案.docx
- KTV感恩节主题活动方案.docx
- LBB1938斑丽功率放大器.docx
- LC480Software1.5中文说明书维护SOP-2010-4-10.docx
- LCD原理及Design注意事项(1).docx
- LDCK系列电磁流量计.docx
- LED的结构及发光原理.docx
- LED路灯产业现状浅析.docx
- led路灯培训资料.docx
- LED日光灯管知识.docx
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)