Существует несколько команд Unix, которые предназначены для работы с двумя файлами. Обычно такие команды позволяют читать содержимое одного из «файлов» из стандартного ввода, используя одну черту вместо имени файла.
Я только что натолкнулся на метод , который, кажется, позволяет читать оба файла из стандартного ввода:
comm -12 <(sort file1) <(sort file2)
Моей первоначальной реакцией на недоверие было: «Это не должно работать. При стандартном вводе будут просто объединяться оба файла. Команда не сможет отличить файлы или даже понять, что они получили содержимое два файла. "
Конечно, эта конструкция работает. Я протестировал его с comm
и diff
, используя bash 3.2.51 на cygwin 1.7.7. Мне интересно, как и почему это работает:
- Почему это работает?
- Это расширение Bash, или это просто функциональность оболочки Bourne?
- Это работает в моей системе, но будет ли этот метод работать на других платформах? (Другими словами, будут ли сценарии, написанные с использованием этой техники, переносимы?)