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

Lav*_*vya 1 linux bash shell

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

小智 7

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

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

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