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

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

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

4 ответа

Решение

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

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

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

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

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

Еще несколько распространенных вариантов использования для перенаправления:

command > /dev/null 2>&1 &

Бежать command на заднем плане откажитесь от stdout и stderr

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

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

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

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

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

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

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

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

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

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

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

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

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

Итак, это должно мыслиться как:

исходная_команда> целевой_файл

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

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

По умолчанию он работает как command 1 > target_file

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

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

Запустите команду и не показывайте мне сообщения об ошибках, откажитесь от них.

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