Що таке / dev / null і як це може вам допомогти?

Якщо ми вже маємо деякі поняття про дерево каталогів GNU / Linux, ми повинні, принаймні, бути знайомими з / dev / reference, де фактично зберігаються всі файли, пов'язані з апаратних пристроїв.

Якщо ми заглянемо в каталог / dev / ми побачимо "файл" з назвою нулю, але якщо ми хочемо відкрити його, щоб побачити його вміст, система скаже нам, що це неможливо, оскільки це не звичайний вміст. Я додав слово word, оскільки, як ви всі знаєте для Linux, все (апаратне та програмне забезпечення) представлено у вигляді файлу.

Це внесок Даніеля Дюранте, ставши таким чином одним з переможців нашого щотижневого конкурсу: «Поділіться своїми знаннями про Linux«. Вітаємо, Данило!

Якому пристрою відповідає / dev / null?

Для практичних цілей уявіть сміттєвий бак, бездонну яму або космічний простір, куди можна кинути що-небудь, не маючи можливості відновити це (як би не старалися хлопці з НАСА).

Але якщо у мене вже є такі команди, як rm, чому я хочу щось нове, що видаляю?

Оскільки спосіб роботи обох "чорних дір" абсолютно інший: як би ви замінили стандартний вивід помилки в команді в сценарії оболонки під час виконання? Тут виникає / dev / null.

Подивимось на прикладі.

Ми створили файл під назвою тести, що містить рядок "Hello World". Якщо ми хочемо представити вміст цього файлу в командному рядку, ми можемо зробити це наступним чином:

user @ laptop: ~ $ тест на кішку
Привіт Світ

Якщо файл не існував або був названий тестами (з позначкою `` в кінці ''), ми отримаємо таку помилку в консолі:

user @ laptop: ~ $ тести на котів
cat: tests: Файл або каталог не існує

Що ми можемо зробити, щоб уникнути повідомлення про помилку? Ну, просто перенаправіть висновок команди, на випадок помилки, у "сміттєвий бак", тобто на / dev / null

Як ми можемо вказати це на випадок помилки? Тут ви вводите стандартні значення вхідних, вихідних та помилок для програми: STDIN, STDOUT і STDERR (які можна замінити 0, 1 і 2 відповідно). Таким чином, якщо ми покладемо ...

user @ laptop: ~ $ cat тести 2> / dev / null
користувач @ ноутбук: ~ $

... Ми побачимо, що повідомлення про помилку не з’явиться на консолі.

Ви повинні бути обережними, оскільки синтаксис є важливим: між символами 2 та> не повинно бути пробілу. В іншому випадку це дало б таке:

user @ laptop: ~ $ cat тести 2> / dev / null
cat: tests: Файл або каталог не існує
cat: 2: Файл або каталог не існує

На відміну від цього, пробіл між> та / dev / null не буде негативно впливати на результат.

Ми також можемо використовувати перенаправлення помилок, наприклад, для фіксації помилок у файлі журналу наступним чином:

user @ laptop: ~ $ cat tests 2> err.log

Іншим цікавим випадком було б збирання результатів в іншому файлі, поки не виникає помилка, для якої ми б поставили:

user @ laptop: ~ $ cat test 1> output_result 2> err.log

Нарешті, варто поставити вираз «> / dev / null 2> & 1», в якому стандартний вивід і вихід помилок поєднуються, перенаправляючи їх так, щоб ні в якому разі не отримувати вихідну інформацію.


Зміст статті відповідає нашим принципам редакційна етика. Щоб повідомити про помилку, натисніть тут.

7 коментарі, залиште свій

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Гвідо Ігнасіо Ігнасіо - сказав він

    Ах, але відсутня одна з найбільш часто використовуваних утиліт, яку має / dev / null, це спорожнення файлів: $ cat / dev / null> file.log Таким чином, файл file.log буде порожнім. Додайте!

    1.    Едуардо Х - сказав він

      Це було саме пояснення, яке він шукав.
      Я підтримую подання про додавання =)

      Saludos!

  2.   Пабло - сказав він

    Привіт, перш за все стаття дуже хороша! друге, я хотів би внести щось із цим посиланням на цю тему завдання cron у php від Cpanel і третє привітання для блогу!

  3.   Пабло - сказав він

    Приємна стаття про dev / null, гадаю, гадаю, я раніше помилково прокоментував не в тому місці! Я прошу вибачення

  4.   Анонімний - сказав він

    дякую хороший внесок

  5.   Йерс - сказав він

    Вітаю, я отримую нульову атаку. Я використовую andrirc, і отримую приватний псевдонім зі словом Null. Через 2 секунди після закриття програми я читав, і з того, що я бачу, це може зробити лише Shell, а не хтось із зовнішніх. Я намагався ігнорувати себе / ігнорувати -lrpcntikd, і мене ніщо не дивує, команда продовжує надходити. Якщо у вас є спосіб спробувати заблокувати його, я був би вдячний. На ура

  6.   Софія Мартінес - сказав він

    Що станеться, якщо при виконанні речення символ> не буде розміщено?

    Хтось міг би мене направити, будь ласка?