Команда `tee` эквивалентна для * input *? - PullRequest
1 голос
/ 26 февраля 2009

Команда unix tee разделяет стандартный ввод на стандартный вывод и файл.

Мне нужно что-то, что работает наоборот, объединяя несколько входов в один выход - мне нужно объединить стандартный вывод двух (или более) команд.
Не уверен, какой должна быть семантика этого приложения - давайте предположим, что каждый аргумент является полной командой.

Пример:

>  eet "echo 1" "echo 2" > file.txt

должен сгенерировать файл с содержимым

1
2

Я пытался

>  echo 1 && echo 2 > zz.txt

Это не работает.

Примечание: я знаю Я мог бы просто добавить результаты каждой команды в файл, но я хочу сделать это за один раз (на самом деле, я хочу передать объединенные выводы в другую программу) .
Кроме того, я мог бы кататься самостоятельно, но мне лень, когда я могу себе это позволить: -)

О да, и было бы неплохо, если бы он работал в Windows (хотя я думаю, что любое решение с использованием bash / linux работает через UnxUtils / msys / etc)

Ответы [ 3 ]

7 голосов
/ 26 февраля 2009

Попробуйте

( echo 1; echo 2 ) > file.txt

Это порождает подоболочку и выполняет там команды

{ echo 1; echo 2; } > file.txt

тоже возможно. Это не порождает подоболочки (точка с запятой после последней команды важна)

1 голос
/ 11 марта 2015

Полагаю, вам нужно запустить обе команды параллельно и соединить оба выхода в другую команду.

Я бы сделал:

( echo 1 & echo 2 ) | cat

Где «echo 1» и «echo 2» - команды, генерирующие выходные данные, а «cat» - команда, которая получит объединенный вывод.

0 голосов
/ 26 февраля 2009

echo 1 > zz.txt && echo 2 >> zz.txt

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

...