Linux命令流水线理解

时间:2014-04-02 15:35:28

标签: linux unix grep pipelining

我对Linux的讨厌使用有点新意。我此刻正在玩流水线。任何人都可以告诉我为什么这不起作用:

ls | grep 2 | rm

(我试图删除名字中包含2的所有文件) ls | grep 2部分正在运行(它返回所有文件名,其中包含2个) 为什么我现在不能将这些名称传递给rm以删除这些文件?

提前感谢你的帮助:)

1 个答案:

答案 0 :(得分:2)

rm期望文件名为 arguments ,而pipe将文件名发送到rm的标准输入( stdin ) 。你可以这样做:

rm $(ls | grep 2)

删除文件。这样,文件名作为参数传递,而不是传递给rm的标准输入。

我用你的命令来解释这个问题。一般来说,you shouldn't parse the result of ls command.