Я просматривал скрипты и везде вижу 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.