Я хотел бы получить краткое объяснение следующей командной строки:
grep -i 'abc' content 2>/dev/null
Я хотел бы получить краткое объяснение следующей командной строки:
grep -i 'abc' content 2>/dev/null
То > оператор перенаправляет вывод обычно в файл, но он может быть и на устройство. Вы также можете использовать >> для добавления.
Если вы не укажете число, то предполагается стандартный выходной поток, но вы также можете перенаправлять ошибки:
> file перенаправляет stdout в файл1> file перенаправляет stdout в файл
2> file перенаправляет stderr в файл
&> file перенаправляет stdout и stderr в файл> file 2>&1 перенаправляет stdout и stderr в файл
/dev/null это нулевое устройство, оно принимает любой ввод, который вы хотите, и выбрасывает его. Его можно использовать для подавления любого вывода.
Обратите внимание, что > file 2>&1 это более старый синтаксис, который все еще работает, &> file это аккуратнее, но не сработало бы на старых системах.
Короче говоря, он перенаправляет stderr (fd 2) в черную дыру (отбрасывает вывод команды).
Некоторые часто используемые шаблоны для перенаправления:
command > /dev/null 2>&1 &Бежать command в фоновом режиме отбросьте stdout и stderr
command >> /path/to/log 2>&1 &Бежать command, добавить stdout и stderr в файл журнала.
В Bash 4+ функциональна более короткая (но менее читаемая) форма
command &>> /path/to/log
/dev/null рассматривается как черная дыра в Linux / Unix, так что вы можете поместить в это что угодно, но вы не сможете получить это обратно из /dev/null.
В дальнейшем, 2> означает, что вы перенаправляете (т.е. >) stderr (т.е. 2) в черную дыру (т.е. /dev/null)
Ваша команда - это:
grep -i 'abc' content 2>/dev/null Не пытайтесь заканчивать еще одной косой чертой, подобной этой - 2>/dev/null/ (это не каталог).
содержимое grep -i 'abc' сгенерирует выходные данные, которые будут отображаться на вашей консоли, включая любые ошибки.
Уточняющий 2>/dev/null будет отфильтровывать ошибки, чтобы они не выводились на вашу консоль.
Более подробно:2 представляет дескриптор ошибки, в который записываются ошибки. По умолчанию они распечатываются на консоли.
\> перенаправляет вывод в указанное место, в данном случае /dev/null
/dev/null это стандартное устройство Linux, на которое вы отправляете выходные данные, которые хотите проигнорировать.
Сначала нам нужно поговорить о > оператор. Он перенаправляет вывод слева от символа вправо от символа.
Так что это должно мыслиться как :
>source_command целевой файл
Другие вещи, которые мы должны знать
0 means stdin 1 means stdout(useful output)2 means stderr(error message output)Как по умолчанию, это работает как command 1 > target_file
Относительно /dev/null> -- это специальный файл, который отбрасывает перенаправление выходного канала на него.
Итак, в вашем вопросе это означает
Запустите команду и не показывайте мне сообщения об ошибках, отбросьте их.