Что делает вывод в / dev / null в сценариях bash?

70

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

some command > /dev/null 2>&1

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

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

    
задан javanix 08.11.2010 в 15:20
источник

2 ответа

98

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

2 >&1 перенаправляет стандартный поток ошибок в стандартный выходной поток (stderr = 2, stdout = 1).

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

    
ответ дан João Pinto 08.11.2010 в 15:31
источник
38

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

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

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

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

>/dev/null 2>/dev/null
    
ответ дан Sid 08.11.2010 в 15:59