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

Я работаю на сервере и для отображения подробной информации о графическом процессоре я использую эти команды:

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 ответ

Решение

Использование 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,

Другие вопросы по тегам