
Хоть это и базовые вещи, но все равно интересно. Рассмотрим эти два примера.
Дело 1:
[root@dhcppc0 practice]# cat file1 > wc -l
cat: invalid option -- l
Try `cat --help' for more information.
Случай 2:
[root@dhcppc0 practice]# cat file1 | wc -l
7
Интересно, почему в первом случае не работает перенаправление? Когда использовать перенаправление, а когда каналы? Я давно пользуюсь Linux, но все равно эта базовая штука сбивает меня с толку.
Пожалуйста помоги.
решение1
Theоператор перенаправленияиспользуется для потоковой передачи команды stdout
в файл ( >
) или для потоковой передачи содержимого файла для stdin
команды ( <
).
Theоператор трубы( |
) передает выходные данные процессов ( stdout
) следующим процессам stdin
.
Единственный способ заставить ваш первый случай работать — использовать временный файл, поэтому вам нужно будет выполнить два шага:
cat file1 > tmpfile
wc -l < tmpfile
решение2
Вы используете каналы, когда хотите подключить FD одного исполняемого файла к FD другого. Вы используете перенаправление, когда хотите подключить FD исполняемого файла к файлу.