我试图了解其用法xargs
并做了以下实验。
ls | xargs | touch
我想刷新当前目录中的文件日期和目录。
虽然是有一点愚蠢的,因为我可以使用更简单的形式来达到相同的效果。
在我看来,xargs
从 读取STDIN
并将其转换为其他命令的参数(/bin/echo
默认情况下,如果未指定命令)。我误解了什么吗?
它失败了,我想知道为什么。
答案1
它需要是这样的:
ls | xargs touch
该命令使用从 stdin 读取的多个字符串来xargs
运行该命令。touch
在您的情况下,stdin forxargs
是管道的输出端ls
。
你的命令方式:
ls | xargs | touch
xargs
没有命令来运行它从标准输入读取的字符串(文件名)。在这种情况下,xargs
只需打印每个文件名,并touch
在其标准输入上获取文件名列表。但touch
不会从其标准输入中读取,并且由于您没有给它任何参数,因此它应该打印一条错误消息,例如:
touch: missing file operand
Try `touch --help' for more information.
(你应该在你的问题中提到)。