如何输出bash命令到stdout并同时管道到另一个命令?

时间:2018-05-24 04:39:08

标签: bash ubuntu pipe piping

我正在使用服务器并显示详细的GPU信息,我使用这些命令:

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

然而,正如您所看到的,nvidia-smi被调用两次。如何让nvidia-smi的输出同时输出并输出到另一个命令?

1 个答案:

答案 0 :(得分:1)

使用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