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