Это, вероятно, во многих часто задаваемых вопросах - вместо использования:
cat file | command
(что называется бесполезным использованием кошки), правильный путь должен быть:
command < file
В 2-й, «правильный» путь - ОС не должна создавать дополнительный процесс.
Несмотря на то, что я знал это, я продолжал использовать бесполезную кошку по двум причинам.
более эстетично - мне нравится, когда данные перемещаются равномерно только слева направо. И проще заменить cat
чем-то другим (gzcat
, echo
, ...), добавить 2-й файл или вставить новый фильтр (pv
, mbuffer
, grep
...).
Я «почувствовал», что в некоторых случаях это может быть быстрее. Быстрее, потому что есть 2 процесса, первый (cat
) читает, а второй делает что угодно. И они могут работать параллельно, что иногда означает более быстрое выполнение.
Правильна ли моя логика (по 2-й причине)?