Как вывести команду bash в stdout и передать трубку другой команде одновременно?

Я работаю на сервере и показываю подробную информацию о 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 для вывода и вывода на другую команду одновременно?

Используйте 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 .