是否可以检查命令使用了哪个流?(bash)

是否可以检查命令使用了哪个流?(bash)

我遇到了一个恼人的问题:重定向 stderr 不起作用。我得到:

iptables: Chain already exists

我懒得检查链是否已经存在(毫无意义,如果链在下一步刷新之前存在,iptables 只会抛出一个错误,所以为什么要检查它是否已经存在)。为了忽略这个问题,我将 stderr 重定向到 /dev/null,但这似乎不起作用。

总体而言:我该如何:

  1. 检查 bash 中的命令使用了哪个流?这可能吗?

  2. 通过命令重定向所有流输出?

答案1

  • 你的 iptables 命令是什么?

  • 你可以看看 /proc/ <pid>/fd/ !那里有“管道”条目,其中包含命令链中涉及的另一个命令的 pid

  • 根据TFM重定向bas​​h中的所有流:

    重定向标准输出和标准错误有两种格式:
    &>word

    >&word
    在这两种格式中,第一种是首选。这在语义上等同于
    >word 2>&1


致问候
Stefan K.

相关内容