1.管道和重定向

Linux程序设计读书笔记,供新手阅读这本书的重点,同时也是加强自己的记忆,扫扫忙点。
首先我们来看最简单的重定向输出:

ls -l > output.txt

现在我们只需知道,标准的文件描述符的三个,0代表标准输入,1代表标准输出, 2代表标准错误输出。
这个例子是通过>操作进行重定向输出,如果源文件存在则直接覆盖,如果不想覆盖,可以使用两种方法:

  • set -o noclobber 设置noclobber选项 set +o noclobber 取消选项
    但我们设置之后我们再去覆盖会有提示:
Paste_Image.png

当我们取消该选项之后,就可以直接覆盖了。

  • ">>" 使用追加操作符可以将内容直接追加到一个文件中

当我们想把命令的标准输入和标准输出分别重定向到不同文件中时:

kill -HUP 1234 > killout.txt 2>killerr.txt

这样就分别重定向,那么如果想同时重定向到一个文件中呢?

kill -l 1234 > killouterr.txt 2>&1

使用 >& 操作可以使标准输入输出同时定向到同一个文件中。
这里要注意操作符出现的顺序,这条命令的意思是:把标准输出重定向到文件killouterr.txt中,然后将标准错误输出重定向到和1(标准输出)一样的地方这里不要弄错顺序,不然的道德不是理想的结果。

上面是重定向的简单解释,后续还会有更多的内容,接着我们来看管道:
不同管道中有着不同的数据流,我们可以使用管道操作符 | 来链接进程,在Linux中,通过管道连接的进程可以同时运行,并且随着数据流在它们之间的传递可以自动的协调,一个简单的例子,
使用sort命令对ps命令的输出进行排序。不使用管道我们要走两步:

ps > psout.txt
sort psout.txt > pssort.out

如果使用管道,那么就会变的简单精巧:

ps | sort > pssort.out

允许链接的数目是没有限制的我们再来一个稍微复杂点的命令
ps -xo comm | sort | uniq | grep -v sh | more
这个命令的意思是:显示错有进程,进行排序,去除重复,抓取不是sh的进程,最后分屏显示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,589评论 9 467
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,239评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 在高中毕业之前我就有个疯狂的念头——开一家旧物当铺,我要以旧物换故事。这个念头一直紧随着我,给了我无穷无尽的动力...
    示子小姐阅读 553评论 7 14
  • 使用Dispatch Group追加block到Global Group Queue,这些block如果全部执行完...
    Code丶Ling阅读 440评论 0 0