![Как именно работает конвейеризация с 2>&1?](https://rvso.com/image/168803/%D0%9A%D0%B0%D0%BA%20%D0%B8%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D0%B9%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20%D1%81%202%3E%261%3F.png)
Только что начал изучать UNIX, поэтому вопрос может показаться совсем новичковым, но буду признателен за ответ, так как уже целый час пытаюсь разобраться с этим самостоятельно с помощью Google, но безуспешно.
cat /etc/shadow 2>&1 | wc -l
Каков будет эффект этой команды? Я предполагаю:
- Команда выводитколичество строкЕсли в «/etc/shadow» есть стандартная ошибка, она будет перенаправлена на стандартный вывод, и будут подсчитаны строки с ошибками.
- Команда выводитфайлыЕсли в «/etc/shadow» есть стандартная ошибка, она будет перенаправлена в стандартный вывод, и будут подсчитаны строки с ошибками.
решение1
X>&Y
дляперенаправление дескриптора файла: это означает, что весь вывод в X
fdна самом делепереход в Y
.
2>&1
перенаправляет вывод STDERR в STDOUT.
wc -l
записывает количество входных строк в STDOUT.
Вместе, команда cat /etc/shadow 2>&1 | wc -l
возвращает количество строк в /etc/shadow
,а такжеколичество строк с ошибками.
Если вынехотите посчитать эти строки с ошибками, просто используйте cat /etc/shadow | wc -l
.
решение2
Это не прямой ответ.
Что мешает вам поэкспериментировать?
Если вы проводили эксперименты, то, возможно, вы сами ответили на свой вопрос.
Выполняйте различные комбинации команд.
cat /etc/shadow
cat /etc/shadows
cat /etc/shadow 2>&1
cat /etc/shadows 2>&1
а затем передавайте каждый из них по трубеwc
cat /etc/shadow | wc
и т.д. и т.п.