Что значит 2 > / dev / null?

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

grep -i 'abc' content 2>/dev/null 
354
задан 6 September 2018 в 15:54

5 ответов

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

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

> файл перенаправляет stdout в файл
1> файл перенаправляет stdout в файл

2> файл перенаправляет stderr в файл

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

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

Обратите внимание, что > file 2>&1 - более старый синтаксис, который все еще работает, &> file аккуратнее, но не работал бы на старых системах.

467
ответ дан 6 September 2018 в 15:54

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

Некоторая широко используемая схема перенаправления:

command > /dev/null 2>&1 &

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

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

выполнить команду , добавить stdout и stderr к лог-файлу.

В Bash 4+ работает более короткая (но менее читабельная) форма

command &>> /path/to/log
38
ответ дан 6 September 2018 в 15:54

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

Далее, 2> означает, что вы перенаправляете (т.е. > ) стандартный поток (т.е. 2 ) в черную дыру (например, / dev / null )

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

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

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

12
ответ дан 6 September 2018 в 15:54

grep -i 'abc' Content будет генерировать вывод, который отображается на вашей консоли, включая любые ошибки.

Если указать 2> / dev / null , будет отфильтрована ошибки, чтобы они не выводились на вашу консоль.

Подробнее: 2 представляет собой дескриптор ошибки, в который записываются ошибки. По умолчанию они распечатываются на консоли.

\> перенаправляет вывод в указанное место, в данном случае / dev / null

/ dev / null является стандартным устройством Linux куда вы отправляете вывод, который хотите игнорировать.

4
ответ дан 22 November 2019 в 22:41

Сначала нам нужно поговорить об операторе > . Он перенаправляет вывод слева от символа вправо от символа.

Таким образом, это должно выглядеть так:

source_command> target_file

Другие вещи, которые мы должны знать

0 means stdin 
1 means stdout(useful output)
2 means stderr(error message output)

Как default , он работает как command 1> target_file

As to / dev / null -> это специальный файл, который отклоняет перенаправление вывода канала на него.

Итак, в вашем вопросе это означает

Выполнить команду и не показывать мне сообщения об ошибках , отбрасывают их .

1
ответ дан 5 January 2021 в 23:18

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

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