我想要以下行为,而不必使用选项显式指定它:
xargs -d '\n'
与大多数命令不同,您不能只使用别名,因为管道无法识别别名(顺便说一句,为什么要这样设计?)。我也尝试创建自己的~/bin/xargs
脚本,但我认为这并不像在脚本中读取“$@”作为字符串那么简单。
有什么建议如何使分隔符默认为换行符吗?当路径中有空格时(并使用find ... -print0 | xargs -0
有其他不良影响)。
UPDATE
我的 shell 脚本尝试是这样的:
/usr/local/bin/xargs -d '\n' "$@"
我测试过xargs -d '\n' -n1 echo
在命令行上,它按照广告的那样工作;将输入分成单行并回显它。
您可能会被关于变量分配期间 shell 转义的假设所困扰。例如,如果您的 shell 脚本与此类似:
CMD="xargs -d '\n' -n1 echo"
cat 输入文件 | $CMD
那么就会发生错误,因为整个 CMD 字符串周围的双引号同时保留了分隔符中的单引号和反斜杠。
如果您将 xargs 命令括在引号内,则可以将其更改为以下内容(无单引号)
CMD="xargs -d \n -n1 回显"
cat 输入文件 | $CMD
它很可能会按照您的需要运行。
在 CentOS 6.4、xargs 版本 4.4.2 上测试
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)