Что идет на нижнее ошибочное перенаправление?

При чтении о Linux я получил следующее:

Поскольку stderr не является тем же как stdout, сообщения об ошибках будут все еще замечены на окнах терминала в вышеупомянутом примере.

Если Вы хотите перенаправить stderr в отдельный файл, Вы используете дескриптор файла stderr номер (2), большее - чем знак (>), сопровождаемый под названием файл, Вы хотите держать все, что рабочая команда пишет в stderr:

$ do_something 2> error-file

Специальная краткая нотация может использоваться для помещения чего-либо записанного в дескриптор файла 2 (stderr) в том же месте как дескриптор файла 1 (stdout): 2> &1

$ do_something > all-output-file 2>&1

колотите разрешает более легкий синтаксис для вышеупомянутого:

$ do_something >& all-output-file

Здесь do_something некоторая команда. Я действительно не получаю то, что происходит внизу во всех 3 вышеизложенных командах. Я знаю & используется для того, чтобы сделать процесс фоновым процессом, но я не получаю логику. Я плохо знаком с этой разновидностью, кто-то может объяснить это?

0
задан 13 April 2015 в 23:29

1 ответ

Ваш беспорядок может состоять в том, потому что >& полностью другая вещь, чем &.

>& или <& используются в перенаправлении для указания на дескриптор файла (fd). Вышеупомянутые случаи перенаправляют к 1 и 2, которые являются stdout и stderr соответственно.

> означает, что "перенаправление stdout"

2> означает, что "fd 2 перенаправления (stderr)"

>&2 значит "перенаправление stdout для fd 2 (stderr)". Отметьте, как это отличается от >2, который значил бы "перенаправление stdout для файла, названного 2" - это - то, почему эти & важно. Это указывает, что следующей вещью будет fd, не имя файла.

Теперь, конечно, поскольку Вы отметили, если & сидит у себя без символа перенаправления, то это означает что-то совершенно другое - "возврат сразу, выполните предыдущую команду в фоновом режиме".

1
ответ дан 4 August 2019 в 21:17

Другие вопросы по тегам:

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