如何利用过滤器

时间:2014-08-07 15:33:15

标签: linux bash shell unix command-line

我已阅读here

  

要制作管道,请在两个命令之间的命令行上放置一个垂直条(|)。

然后

  

当程序从另一个程序获取其输入时,对该输入执行某些操作,并将结果写入标准输出,它被称为过滤器。

所以我首先尝试了ls命令,其输出为:

Desktop    HelloWord.java    Templates            glassfish-4.0
Documents  Music             Videos               hs_err_pid26742.log
Downloads  NetBeansProjects  apache-tomcat-8.0.3  mozilla.pdf
HelloWord  Pictures          examples.desktop     netbeans-8.0

然后ls | echo输出绝对没有。

我正在寻找一种在我的bash脚本中利用pipelinesfilters的方法。请帮忙。

3 个答案:

答案 0 :(得分:3)

echo无法从标准输入读取。它只将其命令行参数写入标准输出。 cat命令就是你想要的,它从标准输入读取标准输出。

ls | cat

(请注意,上面的管道有点无意义,但确实展示了管道的想法。右侧的命令必须从标准输入读取。)

不要将命令行参数与标准输入混淆。

答案 1 :(得分:2)

echo未读取标准输入。要尝试更有用的内容,请尝试

ls | sort -r

以反向排序输出, 或

ls | grep '[0-9]'

仅保留包含数字的行。

答案 2 :(得分:1)

除了其他人所说的内容之外 - 如果您的命令(此示例中为echo)未从标准输入中读取,您可以使用xargs来"提供"这个命令来自标准输入,所以

ls | echo

不起作用,但

ls | xargs echo

工作正常。