трубы против перенаправлений

23

Я давно использую каналы и перенаправления и просто понял, что не знаю точно, чем они отличаются. Я просто знаю, что если вы хотите сохранить вывод в файл, то вы используете>. В противном случае большую часть времени вы просто используете |. Может кто-нибудь объяснить разницу между каналами и перенаправлениями?

tony_sid
источник

Ответы:

25

Оба делают одну и ту же основную вещь; они перенаправляют файловый дескриптор выполненного процесса. Разница заключается в том, как. Канал соединяет стандартный вывод одного процесса со стандартным вводом другого, тогда как перенаправление перенаправляет из / в файл ( >из стандартного вывода в файл, <из файла в стандартный ввод).

Игнасио Васкес-Абрамс
источник
1
Различие вроде размывает в Linux и других системах, которые имеют /dev/fd. Например, если вы запустите echo foo > >(somecommand), он расширится до echo foo > /dev/fd/3. Это все еще перенаправление, но на процесс.
user1686