代码之家  ›  专栏  ›  技术社区  ›  Dang Manh Truong

如何将bash命令输出到stdout,同时将管道发送到另一个命令?

  •  0
  • Dang Manh Truong  · 技术社区  · 6 年前

    我在服务器上工作,为了显示详细的GPU信息,我使用以下命令:

    nvidia-smi
    ps -up `nvidia-smi |tail -n +16 | head -n -1 | sed 's/\s\s*/ /g' | cut -d' ' -f3` 
    

    但是正如你所看到的, nvidia-smi 两次呼叫。我怎样才能输出 英伟达SMI 转到输出并同时连接到另一个命令?

    1 回复  |  直到 6 年前
        1
  •  1
  •   iBug    6 年前

    使用 tee :

    ps -up `nvidia-smi |tee /dev/stderr |tail -n +16 | head -n -1 | sed 's/\s\s*/ /g' | cut -d' ' -f3` 
    

    因为stdout是通过管道传输的,所以您不能复制到它,所以我选择stderr来显示输出。

    如果 /dev/stderr 不可用,请使用 /proc/self/fd/2 .