我面临的问题是通配符量词由于某种原因没有通过 xargs 命令。
假设我们有包含以下内容的文件file1:
-l
-a
f*
我们需要通过xargs将参数传递给ls。
cat file1 | xargs -n3 ls
与ls -la命令等效的输出,以及来自终端的附加信息,即
ls: cannot access f*: No such file or directory.
但是文件在目录中(ls -la f*
返回合适的输出)例如,如果我们将 f* 替换为file1,我们也会有正确的输出。
你能解释一下,为什么会这样?谢谢。
编辑1:
补充一点似乎很有趣,我们如何file1
通过 shell 解释器将参数从文件传递到ls
命令。下面是示例:
ls `xargs -n3 < file1`
现在在ls
调用之前进行 shell 扩展,导致与 for 相同的输出ls -la f*