Выполнить две команды часов одновременно

1750
vaughan

Я хочу запустить два исполняемых файла на переднем плане, набрав одну строку кода или запустив сценарий оболочки. Эти исполняемые файлы просматривают каталог и перекомпилируют некоторый код при выводе своего состояния на стандартный вывод.

Я хочу, чтобы стандартный вывод был представлен так же, как следующие два файла в 'tail', вот так:

tail -f foo.txt -f bar.txt  ==> foo.txt <== Something  ==> bar.txt <== Something else 

Когда что-то меняется, оно печатает имя файла перед печатью вывода. Он печатает имя файла только тогда, когда необходимо указать, что выходные данные поступают из другого файла.

2
Вы на самом деле не задавали вопрос. Я не пытаюсь быть грубым, но я, честно говоря, не знаю, какой у вас вопрос после прочтения этого. Daniel Andersson 11 лет назад 4
Извини за это. Я добавил еще несколько деталей. vaughan 11 лет назад 0

2 ответа на вопрос

1
chepner

Поскольку эти два исполняемых файла записывают в стандартный вывод, вы можете использовать только tailфайлы, созданные путем подстановки процесса:

tail -f <( executable_one ) <( executable_two ) 

( -fКстати, нужен только один . Это глобальный вариант, а не то, что нужно указывать для каждого файла.)

Каждый из двух исполняемых файлов запускается отдельно, а его выходные данные записываются и перенаправляются в дескриптор файла, который передается tail. В выводе имена файлов будут выглядеть примерно так: «/ dev / fd / 63». К сожалению, я не знаю, как получить хвост, чтобы использовать альтернативное имя (например, с помощью grepи --labelопции).

0
Fran