Канал Linux, Предупреждающие сообщения, stdout

Не должен быть проблема, следовать за этим: http://www.petri.co.il/connect-vmware-esx-server-iscsi-san-openfiler.htm

3
задан 8 July 2011 в 02:27
2 ответа
# apcaccess status 2>&1 | grep -i version

Это перенаправит stderr к stdout, таким образом, grep будет видеть вывод.

6
ответ дан 3 December 2019 в 05:07

Причина существует на самом деле два дескрипторов файлов, открытые, которые "печатают" на Ваш экран. stdout (представленный дескриптором файла 1) и stderr (дескриптор файла 2). При передаче по каналу одной команды другому, Вы просто берете stdout от первой команды и "передаете ее по каналу" как stdin к второй команде. Но если первая команда распечатала что-то к stderr (обычно сообщение об ошибке), чем это не передается через канал, но печатается непосредственно на Ваш экран.

Таким образом, необходимо перенаправить stderr к stdout. Достигнутый следующим.

command1 2> &1 | command2

Проподсказки: причина амперсанд необходим, состоит в том, потому что необходимо сказать перенаправление stderr (2) в дескриптор файла stdout (1). Иначе без амперсанда Вы просто говорите stderr перенаправлять в файл, названный '1' в текущем рабочем каталоге. Подобный тому, что Вы могли бы сделать при дампе "вывода" команды (stdout) в файл через 'команду> myfile.log'. Помещение никакого дескриптора файла перед перенаправлением управляет значениями по умолчанию к 1 (stdout).

2
ответ дан 3 December 2019 в 05:07

Теги

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