Как именно работает конвейеризация с 2>&1?

Как именно работает конвейеризация с 2>&1?

Только что начал изучать UNIX, поэтому вопрос может показаться совсем новичковым, но буду признателен за ответ, так как уже целый час пытаюсь разобраться с этим самостоятельно с помощью Google, но безуспешно.

cat /etc/shadow 2>&1 | wc -l

Каков будет эффект этой команды? Я предполагаю:

  1. Команда выводитколичество строкЕсли в «/etc/shadow» есть стандартная ошибка, она будет перенаправлена ​​на стандартный вывод, и будут подсчитаны строки с ошибками.
  2. Команда выводитфайлыЕсли в «/etc/shadow» есть стандартная ошибка, она будет перенаправлена ​​в стандартный вывод, и будут подсчитаны строки с ошибками.

решение1

X>&Yдляперенаправление дескриптора файла: это означает, что весь вывод в Xfdна самом делепереход в 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

и т.д. и т.п.

Связанный контент