Как вывести команду 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
,