Я хотел бы получить краткое объяснение следующей командной строки:
grep -i 'abc' content 2>/dev/null
Оператор >
перенаправляет вывод обычно в файл, но он может быть и в устройство. Вы также можете использовать >>
для добавления.
Если вы не указываете номер, то предполагается стандартный выходной поток, но вы также можете перенаправить ошибки:
> файл
перенаправляет stdout в файл
1> файл
перенаправляет stdout в файл
2> файл
перенаправляет stderr в файл
&> файл
перенаправляет stdout и stderr в файл
> файл 2>&1
перенаправляет stdout и stderr в файл
/dev/null
является нулевым устройством, которое принимает любой нужный вход и выбрасывает его. Он может быть использован для подавления любого вывода.
Обратите внимание, что > file 2>&1
- более старый синтаксис, который все еще работает, &> file
аккуратнее, но не работал бы на старых системах.
Одним словом, он перенаправляет stderr
(fd
] 2) на черную дыру (отбрасывает вывод команды).
Некоторая широко используемая схема перенаправления:
command > /dev/null 2>&1 &
выполнить команду на заднем плане, отбросить
stdout
и stderr
command >> /path/to/log 2>&1 &
выполнить команду
, добавить stdout
и stderr
к лог-файлу.
В Bash 4+ работает более короткая (но менее читабельная) форма
command &>> /path/to/log
/ dev / null
рассматривается как черная дыра в Linux / Unix, поэтому вы можете поместить в нее что угодно, но не сможете получить ее обратно из / dev /null
.
Далее, 2>
означает, что вы перенаправляете (т.е. >
) стандартный поток (т.е. 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 куда вы отправляете вывод, который хотите игнорировать.
Сначала нам нужно поговорить об операторе >
. Он перенаправляет вывод слева от символа вправо от символа.
Таким образом, это должно выглядеть так:
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
-> это специальный файл, который отклоняет перенаправление вывода канала на него.
Итак, в вашем вопросе это означает
Выполнить команду и не показывать мне сообщения об ошибках , отбрасывают их .