cat file | command
Синтаксис вважається Непотрібне використанняCat
. З усіх ваших варіантів потрібен показник продуктивності, оскільки він повинен породити ще один процес у ядрі. Як би незначним це не виявилося у великій картині, це накладні витрати інших форм. Це було висвітлено з питань, таких як: Чи слід мені піклуватися про зайвих котів?
Між іншими двома формами практично немає відмінностей у роботі. STDIN - це спеціальний файловий вузол, який процес має відкривати та читати так само, як і будь-який інший. Передача імені файлу замість STDIN просто змушує його відкрити інший файл.
Різниця полягала б у тому, які функції / гнучкість ви шукаєте.
- Передача імені файлу програмі означало б, що вхідний файл можна шукати. Це може не мати значення для програми, але деякі операції можуть бути виконані, якщо потік шукається.
- Знання фактичного вхідного файлу дозволяє вашій програмі потенційно писати на нього. Наприклад,
sed -i
для редагування на місці. (Примітка. Оскільки для цього потрібно створити новий файл за кадром, це не збільшення продуктивності порівняно з іншими переадресаціями, але це зручність.)
- Використання переадресації оболонки дає можливість об'єднати декілька файлів або навіть використовувати перенаправлення процесу.
sed [exp] < file1 file2
або навіть sed [exp] < <(grep command)
. Детальну інформацію про цей випадок використання можна знайти в цьому запитанні: Заміна процесу та подача труб