Якщо ми вже маємо деякі поняття про дерево каталогів GNU / Linux, ми повинні, принаймні, бути знайомими з / dev / reference, де фактично зберігаються всі файли, пов'язані з апаратних пристроїв.
Якщо ми заглянемо в каталог / dev / ми побачимо "файл" з назвою нулю, але якщо ми хочемо відкрити його, щоб побачити його вміст, система скаже нам, що це неможливо, оскільки це не звичайний вміст. Я додав слово word, оскільки, як ви всі знаєте для 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», в якому стандартний вивід і вихід помилок поєднуються, перенаправляючи їх так, щоб ні в якому разі не отримувати вихідну інформацію.
Ах, але відсутня одна з найбільш часто використовуваних утиліт, яку має / dev / null, це спорожнення файлів: $ cat / dev / null> file.log Таким чином, файл file.log буде порожнім. Додайте!
Це було саме пояснення, яке він шукав.
Я підтримую подання про додавання =)
Saludos!
Привіт, перш за все стаття дуже хороша! друге, я хотів би внести щось із цим посиланням на цю тему завдання cron у php від Cpanel і третє привітання для блогу!
Приємна стаття про dev / null, гадаю, гадаю, я раніше помилково прокоментував не в тому місці! Я прошу вибачення
дякую хороший внесок
Вітаю, я отримую нульову атаку. Я використовую andrirc, і отримую приватний псевдонім зі словом Null. Через 2 секунди після закриття програми я читав, і з того, що я бачу, це може зробити лише Shell, а не хтось із зовнішніх. Я намагався ігнорувати себе / ігнорувати -lrpcntikd, і мене ніщо не дивує, команда продовжує надходити. Якщо у вас є спосіб спробувати заблокувати його, я був би вдячний. На ура
Що станеться, якщо при виконанні речення символ> не буде розміщено?
Хтось міг би мене направити, будь ласка?
Доброго ранку, я встановив Debian netinst в ACER Extensa 5620Z – 32 біт. Після завершення інсталяції з USB і видалення флешки, щоб вона завантажувалася з жорсткого диска (не перевстановлюйте з ручки), але в момент завантаження система вона мене запитує:
Вхід у Debian: xxxxxxxx (OK)
Пароль: xxxxxxxx (ОК)
nil@debian:~$ ???? що це? Що мені туди покласти?
Без цієї команди я не можу продовжити завантаження системи.
Можеш мені допомогти? Я не знаю, як мені далі.
Дуже дякую. З повагою.