Как я могу сравнить вывод двух команд unix, чтобы найти разницу? Я предпочитаю не создавать новые файлы. Я хочу выполнить нечто похожее на: cmd1 > a cmd2 > b cat a b b | sort | uniq -u но без использования файлов a и b. Ответ 1 Утилиты Unix обычно ориентированы на файлы, поэтому ничего не делает то, что вы хотите. Однако zsh может автосоздавать временные файлы со следующим синтаксисом: diff =(cmd1) =(cmd2) Он также может создавать временные именованные каналы (или использовать специальные файлы /dev/fdn для ссылки на анонимные каналы) с помощью diff <(cmd1) <(cmd2) Однако многие diff вызывают lseek() на их входе, поэтому не будут работать с именованными каналами. (diff, как правило, более полезная команда для сравнения очень похожего вывода, чем ваш конвейер выше.) Более подробную информацию см. в разделе "Замена процесса" на странице руководства "zshexpn".
Ответ 1 Утилиты Unix обычно ориентированы на файлы, поэтому ничего не делает то, что вы хотите. Однако zsh может автосоздавать временные файлы со следующим синтаксисом: diff =(cmd1) =(cmd2) Он также может создавать временные именованные каналы (или использовать специальные файлы /dev/fdn для ссылки на анонимные каналы) с помощью diff <(cmd1) <(cmd2) Однако многие diff вызывают lseek() на их входе, поэтому не будут работать с именованными каналами. (diff, как правило, более полезная команда для сравнения очень похожего вывода, чем ваш конвейер выше.) Более подробную информацию см. в разделе "Замена процесса" на странице руководства "zshexpn".