Багато утиліт командного рядка можуть приймати свій вклад або з труби, або як аргумент імені файлу. Для довгих сценаріїв оболонки я вважаю, що запуск ланцюга з допомогою 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
; пункт Калеба про використання функцій та перенаправлення також вирішує це.)