1

Я просматривал скрипты и везде вижу 2>&1 & /dev/null . Кто они такие? После поиска в Google он отличается от OS X от Linux?

2 ответа2

2

Существует три "стандартных файловых потока", которые процессы Unix могут использовать - stdin , stdout и stderr - stdin обычно считывает ввод с клавиатуры, а stdout и stderr обычно переходят в окно терминала. stderr получает дескриптор файла № 2 , а stdout получает дескриптор файла № 1 . 2>&1 означает «перенаправить весь вывод в stderr в то же место, куда идет stdout». /dev/null - символьное устройство - оно просто отбрасывает все, что ему записано.

Если вы не хотите хранить выходные данные скрипта где-либо и не хотите видеть их на своем терминале, вы можете перенаправить stderr в то же место, что и stdout с помощью 2>&1 , а затем перенаправить stdout в /dev/null с > /dev/null

Если бы вы только перенаправили стандартный stdout с помощью > /dev/null , вы все равно бы увидели ошибки на вашем терминале.

1

2>&1 - это информация для оболочки, выполняющей скрипт, чтобы перенаправить все выходные данные, включая ошибки, в указанный пункт назначения, например, в файл или /dev/null

Расположение /dev в системах Linux предоставляет системе доступ к устройствам. Одним из таких устройств является псевдоустройство, называемое null. /dev /null - пустое устройство - вакуум, если хотите. Он ничего не делает, кроме того, что является дырой, куда вы кладете что-то, и он исчезает. Если вы скопируете /dev/null в какой-нибудь файл, например:

cp /dev/null /tmp/foo

указанный файл будет пустым.

Подробную информацию о перенаправлении вывода вы можете найти здесь.

А вот полное определение /dev /null:

В UNIX это виртуальный файл, в который можно записать. Данные, записанные в этот файл, удаляются. Это похоже на вызов файла NUL на компьютерах с Windows. Ключевой момент: при рутировании машины злоумышленники часто перенаправляют запись в /dev /null. Например, команда ln -s /dev /null .bash_history заставит систему прекратить регистрировать команды bash. Культура. В переводе с языка означает почти то же самое, что и черная дыра. Типичное использование: если вам не нравится то, что я должен сказать, пожалуйста, направьте ваши комментарии в /dev /null.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .