Вопрос Что означает 2> / dev / null?


Я хотел бы короткое объяснение следующей командной строки:

grep -i 'abc' content 2>/dev/null 

151
2017-09-26 08:21


происхождения




ответы:


Оператор> перенаправляет вывод обычно в файл, но может быть на устройство. Вы также можете использовать >> для добавления.

Если вы не укажете число, то предполагается стандартный поток вывода, но вы также можете перенаправить ошибки

> file перенаправляет stdout в файл
1> file перенаправляет stdout в файл
2> file перенаправляет stderr в файл
&> file перенаправляет stdout и stderr в файл

/dev/null это нулевое устройство, которое требует любого ввода, который вы хотите, и выбрасывает его. Он может использоваться для подавления любого выхода.


221
2017-09-26 08:38



есть ли разница между > /dev/null 2>&1 а также &> /dev/null - Alexander Mills
На практике сегодня я не думаю, что есть 2>&1 является более старым синтаксисом, поэтому &> не работал бы много лет назад, но оба они эквивалентны. - Warren Hill


Короче говоря, он перенаправляет stderr (fd 2) в черную дыру (отбрасывает вывод команды).

Некоторые более распространенные случаи использования для перенаправления:

command > /dev/null 2>&1 &

Бег command в фоновом режиме, отменить stdout и stderr

command >> /path/to/log 2>&1 &

Бег command и добавьте stdout и stderr в файл журнала.


16
2017-09-26 08:32



Есть ли веская причина для использования > /dev/null 2>&1 вместо &> /dev/null? - Craig McQueen
@CraigMcQueen &> является новым в Bash 4, первый - это просто традиционный способ, я просто привык к нему (легко запомнить). - Terry Wang


/dev/null рассматривается как черная дыра в Linux / Unix, поэтому вы можете вставить что-нибудь в это, но вы не сможете вернуть его из /dev/null,

В дальнейшем, 2> означает, что вы перенаправляете (т. >) stderr (т.е. 2) в черную дыру (т.е. /dev/null)

Ваша команда:

grep -i 'abc' content 2>/dev/null 

Не пытайтесь покончить с другой косой чертой, подобной этой, 2>/dev/null/ (это не каталог).


5
2018-06-11 10:57