Linux — это интересная операционная система, в которой размещены некоторые виртуальные устройства для различных целей. Для программ, работающих в системе, эти виртуальные устройства действуют так, как будто это реальные файлы. Инструменты могут запрашивать и получать данные из этих источников. Данные генерируются ОС вместо того, чтобы считывать их с диска.

Одним из таких примеров является /dev/null . Это специальный файл, который присутствует в каждой системе Linux. Однако, в отличие от большинства других виртуальных файлов, вместо чтения он используется для записи. Все, что вы запишете в /dev/null , будет отброшено, забыто в пустоте. В системе UNIX он известен как нулевое устройство. Зачем вам выбрасывать что-то в пустоту?

Давайте посмотрим, что такое /dev/null и как он используется.

Оглавление:

  • Предварительно
  • Использование /dev/null
  • Перенаправление вывода в /dev/null
  • Перенаправить весь вывод в /dev/null
  • Другие примеры

Предварительно

Прежде чем углубиться в использование /dev/null , мы должны иметь четкое представление о потоке данных stdout и stderr . Ознакомьтесь с этим коротким руководством по stdin, stderr и stdout.

Linux для Начинающих — Перенаправление вывода / ввода — /dev/null

Давайте сделаем небольшое уточнение. При запуске любой утилиты командной строки она генерирует два вывода. Вывод идет на stdout , а ошибка (если она возникла) — на stderr . По умолчанию оба этих потока данных связаны с терминалом.

Например, следующая команда выведет строку, заключенную в двойные кавычки. Здесь вывод сохраняется в stdout .

$ echo «Hello World»

Следующая команда покажет нам статус выхода ранее запущенной команды.

$ echo $?

Поскольку предыдущая команда была выполнена успешно, статус выхода равен 0. В противном случае статус выхода будет другим. Что произойдет, если вы попытаетесь выполнить недопустимую команду?

$ adfadsf $ echo $?

Теперь нам нужно разобраться в файловом дескрипторе. В экосистеме UNIX это целочисленные значения, присвоенные файлу. И stdout (дескриптор файла = 1), и stderr (дескриптор файла = 2) имеют определенный дескриптор файла. Используя дескриптор файла (1 и 2), мы можем перенаправить stdout и stderr в другие файлы.

Для начала, следующий пример перенаправит stdout команды echo в текстовый файл. Здесь мы не указали дескриптор файла. Если он не указан, bash будет использовать stdout по умолчанию.

$ echo «Hello World» > log.txt

Следующая команда перенаправит stderr в текстовый файл.

$ asdfadsa 2> error.txt

Использование /dev/null

Перенаправление вывода в /dev/null

Теперь мы готовы узнать, как использовать /dev/null . Сначала давайте проверим, как фильтровать обычный вывод и ошибки. В следующей команде grep попытается найти строку (hello, в данном случае) в каталоге «/sys».

$ grep -r hello /sys/

Однако это вызовет множество ошибок, поскольку без привилегий root grep не может получить доступ к ряду файлов. В этом случае он выдаст ошибку «Permission denied». Теперь, используя перенаправление, мы можем получить более четкий результат.

$ grep -r hello /sys/ 2> /dev/null

Вывод выглядит намного лучше, верно? Ничего! В этом случае у grep нет доступа ко многим файлам, а в тех, что есть, нет строки «hello».

Читайте также:  Кто приютит в Майнкрафте

В следующем примере мы будем пинговать Google.

$ ping google.com

Однако мы не хотим видеть все эти успешные результаты пинга. Вместо этого мы хотим сосредоточиться только на ошибках, когда ping не смог достичь Google. Как нам это сделать?

$ ping google.com 1> /dev/null

Здесь содержимое stdout сбрасывается в /dev/null , оставляя только ошибки.

Перенаправить весь вывод в /dev/null

В некоторых ситуациях вывод может оказаться бесполезным. Используя перенаправление, мы можем сбросить весь вывод в пустоту.

$ grep -r hello /sys/ > /dev/null 2>> /dev/null

Другие примеры

Это интересный пример. Знаете инструмент dd ? Это мощный инструмент для преобразования и копирования файлов. Узнайте больше о dd . Используя dd , мы можем проверить скорость последовательного чтения вашего диска. Конечно, это не точное измерение. Однако для быстрого теста это довольно полезно.

$ dd if= of=/dev/null status=progress bs=1M iflag=direct

Здесь я использовал Ubuntu 18.04.4 ISO в качестве большого файла.

Аналогичным образом вы также можете проверить скорость загрузки вашего интернет-соединения.

$ wget -O /dev/null

Надеемся, у вас есть четкое понимание того, что такое файл /dev/null. Это специальное устройство, которое при записи в него отбрасывает, а при чтении из него считывает null. Истинный потенциал этой интересной возможности заключается в интересных bash-скриптах.

Источник: wp-kama.ru

Зачем /dev/null, если можно без него?

Часто видел такое в кроне: /dev/null 2>не выводи» и оно будет мусорить в консоль, а нам это не нужно?
Решения вопроса 1

fzfx

driverx18, считается, что у любой программы может быть вывод. если у конкретной программы его нет — то это свойство конкретной программы, я говорю об общем случае.
по умолчанию, если не указано, куда выводить стандартный поток сообщений, то вывод идёт в стандартное устройство вывода — на консоль.
по умолчанию, если не указано, куда выводить стандартный поток ошибок, то вывод идёт в стандартное устройство вывода — на консоль.
если приложение, запущенное через cron, делает вывод в стандартный поток сообщений и/или в стандартный поток ошибок, то cron это перехватывает и, в зависимости от настроек, может херить или, что встречается чаще, передавать в подсистему логгирования, класть в мейлбокс.
поэтому, если вывод сообщений и ошибок принудительно не переназначить в другое место (например, в /dev/null), он, как правило, окажется в почте.

Ответ написан более трёх лет назад
Комментировать
Нравится 9 Комментировать
Ответы на вопрос 2

index0h

PHP, Golang. https://github.com/index0h

Вот вам пример: есть некий сервис S, слушающий порт 80, нужно раз в секунду делать на него http запрос через curl (или wget), как только S начал отвечать 200-ым ответом, без ошибок — выполнить команду C. При этом любой ответ от curl/wget — ожидаемый, даже невозможность определить ip по хосту, и его не нужно выводить в консоль, или логгировать как-то по другому.
Это пример из жизни, используется при старте контейнеров через docker-compose, для выполнения последовательности запуска и миграций.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Читайте также:  Что такое хакер в Майнкрафте

CityCat4

Жил-был у бабушки серенький троллик.

Абсолютному большинству программ в линухе нельзя сказать — не выводи ничего. Есть отдельные программы с «тихим» режимом, но большинство выводит свои ошибки в консоль, причем иногда весьма подробно. В очень большом количестве случаев этот вывод тебе накуа не нужен — и его отправляют в /dev/null

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

linux

  • Linux
  • +2 ещё

Как скопировать SSH ключ на удалённую Ubuntu 18.04 при помощи ssh-copy-id?

  • 1 подписчик
  • 4 часа назад
  • 60 просмотров

Источник: qna.habr.com

Dev null что такое minecraft

Для тех кто всё ещё не понял, это будет предмет, в слот которого не может поместится больше определённого кол-ва выбранных предметов. Если это количество достигнуто, то лут имеющий такой же id как и тот который лежит в нашем /dev/null`e не будет собираться.
Если вы всё ещё не поняли, то скажу так:
1. Это не имба.
2. Это полезно, особенно шахтёрам.

#1.1 контекстная реклама от партнеров

papasid

Ответов: 9240
#2: 2016-02-09 18:58:51 ЛС | профиль | цитата
Hammering писал(а):
Это полезно, особенно шахтёрам.

Hammering

Ответов: 326
#3: 2016-02-09 19:03:31 ЛС | профиль | цитата
papasid писал(а):

Не надо в лишний раз отвлекаться на очистку инвентаря от булыжниказемлигравия, то есть ты просто копаешься и тебе единственное что нужно делать — это менять буры.

papasid

Ответов: 9240
#4: 2016-02-09 19:16:32 ЛС | профиль | цитата

Не понял. Ресурсы что ли не нужны уже стали?
Почему нельзя старым способом — по одному предмету в каждую ячейку и будет лутаться что ты захочешь.

Hammering

Ответов: 326
#5: 2016-02-09 19:22:00 ЛС | профиль | цитата
Можно и так, но иногда не хочется закладывать весь инвентарь блоками.

—VanHelsing_1—

Ответов: 622
#6: 2016-02-09 19:26:16 ЛС | профиль | цитата

Мне кажется что старый вариант с закладыванием инвентаря блоками вполне сойдет,ну нужно это вводить..

Hammering

Ответов: 326
#7: 2016-02-09 19:26:56 ЛС | профиль | цитата
Примерно оформил блок, помещённый в /dev/null

LoneWanderer

Ответов: 1792
#8: 2016-02-09 19:30:25 ЛС | профиль | цитата

В принципе то да, наверное будет кому-то полезно и даже нужно, но будут ли этим заинтересованы все, и какие могут быть последствия после введения этой новой функции для шахтёра ?

Backend-Developer Мои документы Atarashi Jinsei

Hammering

Ответов: 326
#9: 2016-02-09 19:36:43 ЛС | профиль | цитата
-STS- писал(а):
какие могут быть последствия после введения этой новой функции для шахтёра ?

Последствий никаких, а пользоваться будут этим те, кому принципиально сохранять порядок в чистоте.
Возможно я плохо объясняю, надеюсь это видео объяснит что я имел ввиду:

BoulevardDepo

Ответов: 1229
#10: 2016-02-09 19:38:46 ЛС | профиль | цитата
Hammering, сторонние моды врятли придадут индивидуальности данному проекту.

Hammering

Ответов: 326
#11: 2016-02-09 19:41:53 ЛС | профиль | цитата
iHpWin писал(а):
Hammering, сторонние моды врятли придадут индивидуальности данному проекту.

Никто не говорил что это индивидуально, а нашёл я это в статьях для продвинутых пользователей Linux.
На мод для Minecraft я уже наткнулся случайно, пока искал более лаконичный ответ.

Читайте также:  Фонарь душ в Майнкрафте как сделать

zelovo37

Ответов: 788
#12: 2016-02-09 22:10:26 ЛС | профиль | цитата
Hammering, Артём бред предлагаешь. Во первых
papasid писал(а):

Не понял. Ресурсы что ли не нужны уже стали?
Почему нельзя старым способом — по одному предмету в каждую ячейку и будет лутаться что ты захочешь.

Тогда внесёт некий имбаланс возможно потому-что шахтёры которые не умело закидывают,станут закидать в любом случае)

Hammering

Ответов: 326
#13: 2016-02-09 22:24:27 ЛС | профиль | цитата
zelovo37 писал(а):

Тогда внесёт некий имбаланс возможно потому-что шахтёры которые не умело закидывают,станут закидать в любом случае)

По секрету, оно помогает не подбирать определённый ресурс, а не выкидывать его. Так сказать рогатка, которая работает ну например только на булыжник. Понятия не имею как оно может помочь при закидывании.

NSAY

Ответов: 1306
#14: 2016-02-09 22:33:07 ЛС | профиль | цитата
Hammering писал(а):
-STS- писал(а):
Возможно я плохо объясняю, надеюсь это видео объяснит что я имел ввиду:

Всё просто
Черный список для предметов(блоков). Вы вносите в него любой блок и он вообще не собирается в инвентарь.

Hammering

Ответов: 326
#15: 2016-02-09 22:44:44 ЛС | профиль | цитата
NSAY писал(а):

Всё просто
Черный список для предметов(блоков). Вы вносите в него любой блок и он вообще не собирается в инвентарь.


Вообще этот предмет почти по такому принципу и работает.

Assasin

Разработчик
Ответов: 3014
NeverClan
[W] Inactive
#16: 2016-02-09 23:06:25 ЛС | профиль | цитата
Hammering писал(а):

Никто не говорил что это индивидуально, а нашёл я это в статьях для продвинутых пользователей Linux.
На мод для Minecraft я уже наткнулся случайно, пока искал более лаконичный ответ.

Не знаю, где вы нашли таких «продвинутых пользователей Linux», но на самом деле в Linux-е /dev/null используется для уничтожения чего бы то ни было, либо указания, что чего-то не существует. Например, можно направить вывод программы в /dev/null, и больше вы его нигде не увидите, или наоборот подать на вход программе /dev/null — тогда она вообще ничего не сможет прочитать.

Кратко: /dev/null как черная дыра — все принимает, ничего не отдает. В топике же вообще не понятно, что имеется в виду.

Мои рассказы | LHCreator — строй БАКи прямо в браузере | osu! team

Bugayov_lol

Ответов: 1128
St. Xenogen
I hate globes
#17: 2016-02-09 23:26:33 ЛС | профиль | цитата
Неплохо, за

NSAY

Ответов: 1306
#18: 2016-02-09 23:32:38 ЛС | профиль | цитата
Hammering писал(а):

Всё просто
Черный список для предметов(блоков). Вы вносите в него любой блок и он вообще не собирается в инвентарь.

Вообще этот предмет почти по такому принципу и работает.

судя по твоим словам не совсем так)

Черный список для предметов(блоков). Вы вносите в него любой блок и он вообще не собирается в инвентарь.
Предмет из черного списка может собираться в инвентарь в заданном количестве так? Либо не собираться вообще.

Источник: forum.minecraft-galaxy.ru