Перенаправление назад - это то же самое, что и канал?


Ответы:


17

К вашему заглавному вопросу: Нет. Получение stdinиз содержимого файла ( перенаправление ввода ) - это не то же самое, что отправка вывода одной программы на вход другой программы.

Но, поскольку вы на catсамом деле просто печатаете содержимое файла, результат в этом примере практически одинаков.


Но даже только следующее дает очень разные результаты:

$ cat * | sort
$ sort < *

Если существует более одного соответствующего файла, последний произведет

-bash: *: ambiguous redirect

поскольку он не так гибок, как предыдущий, который отслеживает все соответствующие файлы и направляет их в качестве входных данных sort.


3
Как насчет ... sort *? Никакого бесполезного использования cat, никакого бесполезного использования косвенного обращения, кратчайшего типа, самого
легкого для понимания

1
@sehe Вероятно. Я просто использовал пример, чтобы показать, что они разные. Это не об эффективном использовании сортировки. Сортировка более гибкая, чем это, конечно.
Даниэль Бек

@DanielBeck, Что касается эффективности, sort < txtfileгораздо эффективнее, чем cat txtfile | sort?
Пейсер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.