为什么不起作用echo * | rm -f
?根据我的理解,echo *
应该列出目录中的所有文件,管道应该将此列表作为参数发送给命令rm -f
,命令应该删除这些文件。我遗漏了什么?
答案1
管道将数据发送到标准输入。而不是参数列表。这是两个非常不同的概念。
参数是命令行后面的内容。Stdin 基本上就像一个已打开的文件,你可以从中读取。
还请注意,这样做echo * | xargs rm -f
是个坏主意,因为如果文件名称中带有空格或开头带有“-”,它可能会产生奇怪的效果。
答案2
将输出echo *
作为参数传递,而不是来自管道的标准输入。
rm -f `echo *`