Многие утилиты командной строки могут получать свои данные либо из канала, либо в качестве аргумента имени файла. Для длинных сценариев оболочки, я считаю, что начало цепочки с помощью cat
делает ее более читаемой, особенно если первая команда будет нуждаться в многострочных аргументах.
сравнить
sed s/bla/blaha/ data \
| grep blah \
| grep -n babla
а также
cat data \
| sed s/bla/blaha/ \
| grep blah \
| grep -n babla
Последний метод менее эффективен? Если да, то достаточно ли разницы, чтобы заботиться о том, запускается ли скрипт, скажем, раз в секунду? Разница в читаемости не огромна.
cat
. Однако я думаю, что главный вопрос здесь - читаемость кода, которая часто является приоритетом перед производительностью. Когда быстрее можно написать красивее , почему бы и нет? Указание на проблему cat
обычно приводит к тому, что пользователь лучше понимает конвейеры и процессы в целом. Это стоит того, чтобы в следующий раз они написали понятный код.
cat
; точка зрения Калеба об использовании функций и перенаправления также решает эту проблему.)