如何将带参数的命令传递给xargs
How to pass command with parameters to xargs
echo ls -l -a / | xargs sh -c
如何使上面的命令生效?
它只列出当前目录
似乎只有 ls 被传递给 xargs
echo '"ls -l -a /"' | xargs sh -c
虽然可以,但我得到的输入没有 ""
sh
的 -c
标志仅接受一个参数,而 xargs 将参数拆分为空格 - 这就是双引号起作用的原因(一个级别使其成为 shell, 一个用于 xargs).
如果您对 xargs
使用 -0
或 null
参数,您的特定情况将有效:
echo ls -l -a / | xargs -0 sh -c
来源:http://www.unixmantra.com/2013/12/xargs-all-in-one-tutorial-guide.html
如@darklion 所述,-I 表示参数列表标记,-c 表示 bash 命令 运行 在 xargs 的每个输入行上。
简单地将输入打印到 xargs:
ls -d */ | xargs echo
#One at a time
ls -d */ | xargs -n1 echo
每个输入的更多操作:
ls -d */ | xargs -n1 -I {} /bin/bash -c ' echo {}; ls -l {}; '
您可以将 {} 替换为自定义字符串:
ls -d */ | xargs -n1 -I file /bin/bash -c ' echo file; ls -l file; '
echo ls -l -a / | xargs sh -c
如何使上面的命令生效?
它只列出当前目录
似乎只有 ls 被传递给 xargs
echo '"ls -l -a /"' | xargs sh -c
虽然可以,但我得到的输入没有 ""
sh
的 -c
标志仅接受一个参数,而 xargs 将参数拆分为空格 - 这就是双引号起作用的原因(一个级别使其成为 shell, 一个用于 xargs).
如果您对 xargs
使用 -0
或 null
参数,您的特定情况将有效:
echo ls -l -a / | xargs -0 sh -c
来源:http://www.unixmantra.com/2013/12/xargs-all-in-one-tutorial-guide.html
如@darklion 所述,-I 表示参数列表标记,-c 表示 bash 命令 运行 在 xargs 的每个输入行上。
简单地将输入打印到 xargs:
ls -d */ | xargs echo
#One at a time
ls -d */ | xargs -n1 echo
每个输入的更多操作:
ls -d */ | xargs -n1 -I {} /bin/bash -c ' echo {}; ls -l {}; '
您可以将 {} 替换为自定义字符串:
ls -d */ | xargs -n1 -I file /bin/bash -c ' echo file; ls -l file; '