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

Ответы:

17

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

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


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

$ cat * | sort
$ sort < *

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

-bash: *: ambiguous redirect

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

Даниэль Бек
источник
3
Как насчет ... sort *? Никакого бесполезного использования cat, никакого бесполезного использования косвенного обращения, кратчайшего типа, самого
легкого для понимания
1
@sehe Вероятно. Я просто использовал пример, чтобы показать, что они разные. Это не об эффективном использовании сортировки. Сортировка более гибкая, чем это, конечно.
Даниэль Бек
@DanielBeck, Что касается эффективности, sort < txtfileгораздо эффективнее, чем cat txtfile | sort?
Пейсер