如何在 xargs 命令中使用 &>>?
Posted
技术标签:
【中文标题】如何在 xargs 命令中使用 &>>?【英文标题】:How to use &>> in a xargs command? 【发布时间】:2017-11-15 00:38:04 【问题描述】:专家,
按照这个question我执行这个命令:
使用 posix 的 xargs 参数:
find <somePath> -name '*.html' | sort -n | xargs -I sh -c 'w3m "" &>> "test.log"' --
我收到以下错误:
file.hml:-c:第 0 行:意外标记 `>' 附近的语法错误 file.hml: -c: line 0: `w3m ".html" &>> "test.log"'为什么 bash 在我的行执行中不理解 &>>?
正如@Nahuel Fouilleul 所说,“sh (posix) 无法识别 (bash) 重定向 &>>”。
使用 bash 的 xargs 参数
但是,当我执行以下命令时,建议的解决方案不起作用:
find <somePath> -name '*.html' | sort -n | xargs -I w3m &>> "test.log"
我收到此错误:
bash:意外标记 `>' 附近的语法错误为什么 bash 在我的行执行中不理解 &>>?看我的回答
【问题讨论】:
你用某个路径替换如果sh
(posix) 无法识别 (bash) 重定向 &>>
,它可能无法工作。
但是对于某些文件名,该命令仍然会中断。
命令应该是。
.. | xargs -I bash -c 'w3m "$1" &>> "test.log"' "process_name_you_want"
或者为了避免打开日志文件,每个文件重定向可以移出
.. | xargs -I w3m &>> "test.log"
编辑:对于处理文件并写入输出的工具来说,答案是通用的,在查看 w3m 工具后,它似乎是控制台中的网络浏览器,你想做什么?
【讨论】:
谢谢我尝试了第二种解决方案 ".. | xargs -I w3m &>> "test.log" 我收到以下错误:bash: syntax error near unexpected token `> '。我的目录中有 html 文件,我想将它们转储到日志文件中。因此我使用 w3m 在标准输出中显示 html 文件的信息。【参考方案2】:从here 我意识到运算符“&>>”仅适用于 Bash 版本 4。我使用的是 Bash 版本 3.2.51,所以它不起作用。
对于 bash 4 之前的版本,需要两个运算符:
w3m >> test.log 2>&1
地点:
">>" 将标准输出附加到 test.log
"2>&1" 将标准错误重定向到标准输出的位置
所以使用 xargs 的命令如下:
.. | xargs -I w3m >> "test.log" 2>&1
【讨论】:
以上是关于如何在 xargs 命令中使用 &>>?的主要内容,如果未能解决你的问题,请参考以下文章