Что означает 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
-> это специальный файл, который отклоняет перенаправление вывода канала на него.
Итак, в вашем вопросе это означает
Запустите команду и не показывайте мне сообщения об ошибках, откажитесь от них.