为什么 echo * | rm -f 不起作用?

为什么 echo * | rm -f 不起作用?

为什么不起作用echo * | rm -f?根据我的理解,echo *应该列出目录中的所有文件,管道应该将此列表作为参数发送给命令rm -f,命令应该删除这些文件。我遗漏了什么?

答案1

管道将数据发送到标准输入。而不是参数列表。这是两个非常不同的概念。

参数是命令行后面的内容。Stdin 基本上就像一个已打开的文件,你可以从中读取。

还请注意,这样做echo * | xargs rm -f是个坏主意,因为如果文件名称中带有空格或开头带有“-”,它可能会产生奇怪的效果。

答案2

将输出echo *作为参数传递,而不是来自管道的标准输入。

rm -f `echo *`

相关内容