Что выполняет вывод в / dev / null в сценариях bash? [дубликат]

На этот вопрос уже есть ответ здесь:

Часто я сталкиваюсь с небольшими сценариями bash, которые используют такого рода синтаксис в операторах if:

some command > /dev/null 2>&1

Какова цель такого вывода в / dev / null и что означает 2> & 1 ?

Кажется, что всегда так работа, но я хотел бы знать, что он делает.

138
задан 29 April 2015 в 20:25

2 ответа

STDIN представлен 0, STDOUT - 1, а STDERR - 2.

/ dev / null - это набор битов: место, куда вы сбрасываете все, что вам не нужно.


Итак, STDOUT перенаправляется в корзину битов (мусор), а STDERR перенаправляется туда, где находится STDOUT: битовая корзина.


Вы также можете сделать это:

>/dev/null 2>/dev/null
0
ответ дан 29 April 2015 в 20:25

>/dev/null перенаправляет стандартный вывод команды на нулевое устройство, которое является специальным устройством, которое сбрасывает записанную в него информацию

2>&1 перенаправляет поток стандартной ошибки в стандартный поток вывода (stderr = 2, стандартный вывод = 1). Обратите внимание, что это берет стандартный поток ошибок и указывает его в то же место, что и стандартный вывод в тот момент. Это является причиной заказа >/some/where 2>&1, потому что нужно сначала указать stdout куда-то, а затем указать stderr на одно и то же место, если вы хотите объединить оба потока в конце.

На практике это предотвращает отображение любого вывода команды (как stdout, так и stderr). Используется, когда вам нет дела до вывода команды.

0
ответ дан 29 April 2015 в 20:25

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

Похожие вопросы: