对于Pipe管道之爱 - jessfraz

栏目: 服务器 · 发布时间: 5年前

内容简介:我最常用的shell命令是"|"。这称为管道。简而言之,"|"允许一个程序(左侧)的输出成为另一个程序的输入(在右侧)。这是一种将两个命令连接在一起的方法。例如,如果我要运行以下内容:

我最常用的 shell 命令是"|"。这称为管道。

简而言之,"|"允许一个程序(左侧)的输出成为另一个程序的输入(在右侧)。这是一种将两个命令连接在一起的方法。

例如,如果我要运行以下内容:

echo "hello"

输出hello。

但如果我运行:

echo "hello" | figlet

这个figlet程序是改变了hello字符,看上去像卡通。

这是一种非常直率的描述某些东西的方式,在我看来,这是一种出色的软件设计,但我会在一秒钟之内学会。

让我们回到管道的起源。

根据 doc.cat-v.org/unix/pipes/ ,管道的起源早在Unix之前 就已存在 。管道可以追溯到1964年Doug McIlroy的这篇笔记。

     - 10 -
    Summary--what's most important.

To put my strongest concerns into a nutshell:

1. We should have some ways of coupling programs like
garden hose--screw in another segment when it becomes when
it becomes necessary to massage data in another way.
This is the way of IO also.

2. Our loader should be able to <b>do</b> link-loading and
controlled establishment.

3. Our library filing scheme should allow <b>for</b> rather
general indexing, responsibility, generations, data path
switching.

4. It should be possible to get <b>private</b> system components
(all routines are system components) <b>for</b> buggering around with.

                                                M. D. McIlroy
                                                October 11, 1964 

Doug McIlroy将Unix哲学记录为:

  1. 让每个程序只做好一件事。要做新的任务,宁可重新构建而不是在旧程序上添加新的“功能”使旧程序复杂化。
  2. 期望每个程序的输出成为另一个尚未知的程序的输入。不要使用无关信息来混淆输出。避免严格的柱状或二进制输入格式。不要坚持互动输入。
  3. 设计和构建软件,甚至是操作系统,要及早尝试,最好在几周内完成。不要犹豫扔掉笨拙的部分并重建它们。
  4. 工具优先于不熟练的帮助,这样可减轻编程任务,即使你不得不绕道去构建工具(磨刀不误砍材工)。

我喜欢Unix的是“做好一件事”和“期望每个程序的输出成为另一个程序的输入”的理念。

这种理念建立在 工具 的使用上。这些工具可以单独使用,也可以组合使用以完成工作。这与用于解决特定问题的一切或一次性程序的单片程序形成鲜明对比。

我们在上面看到的echo默认将信息输出到终端。例如,cat将“连接”(它的同名)文件并将结果打印到终端。 在Unix中 阅读 程序设计时 ,我意识到将工具的输出打印到用户终端实际上​​是特例。

当用户将cat通过“|”输出重定向到某个其他程序时, cat功能变得比原作者预想的要多得多。在我看来,这是最精彩的 设计模式 之一。

一方面,程序简单,做好一件事就可以轻松搞定。然而,美丽的部分是,与|程序这样的操作员相结合, 成为更大规划中的一步。原作者 cat甚至不需要了解什么更大的计划。这就是它的美妙之处在于“|”它可以通过将小而简单的程序组合在一起来解决问题。

我喜欢软件设计,它能够创造性,价值观简单,并且不会将用户放在盒子里。管道是保持程序简单同时实现可扩展性的关键元素。与"|"结合的简单程序变得远远超过原作者梦寐以求的程度。

我希望这篇文章可以帮助你学习一些东西,如果不是的话,只需要把它管道化到: /dev/null


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构

数据结构

严蔚敏、吴伟民 / 清华大学出版社 / 2007-3-1 / 30.0

《数据结构》(C语言版)是为“数据结构”课程编写的教材,也可作为学习数据结构及其算法的C程序设计的参数教材。 本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及其综合分析比较。其内容和章节编排1992年4月出版的《数据结构》(第二版)基本一致,但在本书中更突出了抽象数据类型的概念。全书采用类C语言作为数据结构和算法的描述语言。 ......一起来看看 《数据结构》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具