【问题标题】:How to use &>> in a xargs command?如何在 xargs 命令中使用 &>>?
【发布时间】: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 在我的行执行中不理解 &>>?看我的回答

【问题讨论】:

  • 你用某个路径替换 吗?

标签: bash


【解决方案1】:

如果sh (posix) 无法识别 (bash) 重定向 &amp;&gt;&gt;,它可能无法工作。 但是对于某些文件名,该命令仍然会中断。

命令应该是。

.. | 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

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    相关资源
    最近更新 更多