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

Спецификация POSIX для командного языка оболочки, раздел 2.7, перенаправление , гласит

The overall format used for redirection is:
 [n‪] redir-op word

The number n is an optional decimal number designating the file descriptor number; …
    ︙
…  The values 0, 1, and 2 have special meaning and conventional uses and are implied by certain redirection operations; they are referred to as standard input, standard output, and standard error, respectively.  …

    ︙

The general format for redirecting input is:
 [n ]<word

where the optional n represents the file descriptor number.  If the number is omitted, the redirection shall refer to standard input (file descriptor 0).

… и аналогичный абзац, в котором говорится, что >эквивалентно 1>, со ссылкой на стандартный вывод.

1
08.03.2020, 01:44
2 ответа

X>&Yдля перенаправления дескриптора файла:это означает, что весь вывод в fd Xявляется фактически поступающим в Y. 2>&1выводит вывод STDERR в STDOUT.


wc -lзаписывает количество входных строк в STDOUT.


Вместе команда cat /etc/shadow 2>&1 | wc -lвозвращает количество строк в /etc/shadow, , а также количество строк с ошибками.

Если вы не хотите считать эти строки ошибок, просто используйте cat /etc/shadow | wc -l.

5
28.04.2021, 23:21

Это не прямой ответ.

Что мешает вам поэкспериментировать?

Если вы проводили эксперименты, то, возможно, вы сами ответили на свой вопрос.

Запуск различных комбинаций команд.

cat /etc/shadow
cat /etc/shadows

cat /etc/shadow  2>&1
cat /etc/shadows 2>&1

, а затем направить каждый наwc

cat /etc/shadow    |  wc

и т.д. и т.п.

1
28.04.2021, 23:21

Теги

Похожие вопросы