Чи зворотне перенаправлення те саме, що і труба?


Відповіді:


17

До вашого заголовкового питання: Ні. Перехід stdinіз вмісту файлу ( перенаправлення входу ) - це не те саме, що передавати вихід однієї програми на вхід іншої програми.

Але, оскільки ваш catвласне просто друкує вміст файлу, результат фактично такий самий у тому прикладі.


Але навіть тільки наступне дає дуже різні результати:

$ cat * | sort
$ sort < *

Якщо є декілька відповідних файлів, останній видасть

-bash: *: ambiguous redirect

оскільки це просто не так гнучко, як колишній, який буде містити всі відповідні файли та передавати їх як вхідні дані sort.


3
Як щодо ... sort *? Немає марно використовувати кішку, що не марно використовувати непрямі, найкоротшим не набирати, простіше за все думати, і я вважаю , GNU роду будуть ставитися до вам масштабованість оптимізації для дуже великих файлів (не впевнений , що - половина схаменувшись там)
sehe

1
@sehe Напевно. Я просто використав приклад, щоб показати, що два різні. Мова не йде про ефективне використання сорту. Сортування є більш гнучким, ніж, звичайно.
Даніель Бек

@DanielBeck, Щодо ефективності, це sort < txtfileнабагато ефективніше, ніж cat txtfile | sort?
Pacerier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.