Как я могу сравнить вывод двух команд Unix, чтобы найти разницу? - PullRequest
13 голосов
/ 07 ноября 2010

Я предпочитаю не создавать новые файлы.Я хочу сделать что-то похожее на:

cmd1 > a
cmd2 > b
cat a b b | sort | uniq -u

, но без использования файлов a и b.

1 Ответ

29 голосов
/ 07 ноября 2010

Утилиты Unix, как правило, ориентированы на файлы, поэтому ничто не дает того, что вы хотите.

Однако zsh может автоматически создавать временные файлы со следующим синтаксисом:

diff =(cmd1) =(cmd2)

Он также может создавать временные именованные каналы (или использовать специальные файлы /dev/fdn для ссылки на анонимные каналы) с помощью

diff <(cmd1) <(cmd2)

Однако многие diff s вызывают lseek() onих ввод, поэтому не будет работать с именованными каналами.

(diff в целом является более полезной командой для сравнения очень похожих выходных данных, чем ваш конвейер выше.)

Смотрите "процесс"подстановка "раздел справочной страницы" zshexpn "для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...