белка с орехами писал(а):нужно получить в итоговый stdout вывод stderr от command1 (и желательно от command2 тоже)
Как я понял, комманды должны выполняться параллельно. Тогда возможны две ситуации: первая - вам нужен весь этот хлам просто на терминале, вторая - вам весь этот вывод нужно обработать, т.е. прогнать через
grep или
sed.
В первом случае всё предельно просто: запускаете сначала
command1 в фоне, а затем запускаете
command2. Выглядеть это будет как-то так:
Код: Выделить всё
$ command1 > /dev/null &
[1] 1234
$ command2 > /dev/null
Здесь стандартный вывод подавляется, что бы не забивать терминал.
Во втором случае придётся немного схитрить и создать именованый канал, в который будут писать
command1 и
command2. Для параллельной работы одну из них, или обе, всё равно придётся запустить в фоне. Выглядеть это будет следующим образом:
Код: Выделить всё
$ mkfifo /tmp/mega-pipe
$ command1 > /dev/null 2> /tmp/mega-pipe &
[1] 1234
$ command2 > /dev/null 2> /tmp/mega-pipe &
[2] 6456
$ cat /tmp/mega-pipe | grep "smth"