我已阅读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脚本中利用pipelines
和filters
的方法。请帮忙。
答案 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
工作正常。