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

问题描述 投票:0回答:1

我正在使用服务器并显示详细的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的输出同时输出并输出到另一个命令?

bash ubuntu pipe piping
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.