gpt4 book ai didi

bash - 将文件的内容通过管道传输到 ls

转载 作者:行者123 更新时间:2023-11-29 09:17:59 25 4
gpt4 key购买 nike

我有一个名为 "input.txt." 的文件,其中包含一行:

/bin

我想让文件的内容成为命令ls的输入

我试过

cat input.txt | ls

但不输出/bin目录下的文件列表

我也试过

ls < input.txt

没有用。

最佳答案

您正在寻找 xargs (转置参数)命令。

xargs ls < input.txt

你说你想要/bin成为 ls 的“输入” ,但这是不正确的; ls不对其输入做任何事情。相反,你想要 /bin作为命令行参数传递给ls , 就好像你输入了 ls /bin .

输入和参数是完全不同的东西;将文本作为输入提供给命令与将该文本作为参数提供不同。许多命令(例如 cat)的事实可能会模糊差异。 , 将对他们的输入或他们的参数(或两者)进行操作——但即使在那里,我们也发现了一个重要的区别:他们实际操作的是文件的内容,其名称 作为参数传递。

xargs command 专门设计用于在这两者之间进行转换:它将其输入解释为以空格分隔的命令行参数列表,以传递给其他命令。该其他命令提供给 xargs作为它的命令行参数,在本例中为ls .

感谢 shell 通过 < 提供的输入重定向, 参数 xargs供应给ls这里来自 input.txt文件。

还有其他方法可以完成同样的事情;例如,只要input.txt里面没有太多文件以至于它们无法放在一个命令行中,您可以这样做:

ls $(< input.txt)

上面的命令和xargs版本将处理 input.txt 中的任何空格文件作为分隔文件名,所以如果你的文件名包含空格字符,你将不得不做更多的工作来正确解释文件。另请注意,如果任何文件名包含通配符/“glob”字符,如 ?*[ ... ] , $(< ... ) version 会将它们扩展为通配符模式,而 xargs不会的。

关于bash - 将文件的内容通过管道传输到 ls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44739947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com