Я просматривал скрипты и везде вижу 2>&1 & /dev/null . Кто они такие? После поиска в Google он отличается от OS X от Linux?
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 , вы все равно бы увидели ошибки на вашем терминале.
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.
