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


23

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


Ответы:


25

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


1
Различие вроде размывает в Linux и других системах, которые имеют /dev/fd. Например, если вы запустите echo foo > >(somecommand), он расширится до echo foo > /dev/fd/3. Это все еще перенаправление, но на процесс.
user1686
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.