Ако веќе имаме некои поими за дрвото на директориуми ГНУ / Линукс, треба барем да бидеме запознаени со референцата / dev /, што е ефективно каде што сите датотеки се поврзани со хардверски уреди.
Ако погледнеме во директориумот / dev / ќе видиме „датотека“ наречена нула, но ако сакаме да го отвориме за да ја видиме неговата содржина, системот ќе ни каже дека не е можно бидејќи не е обична содржина. Јас го приложив зборот датотека затоа што, како што сите знаете за Linux, сè (хардвер и софтвер) е претставено како датотека. |
На кој уред одговара / dev / null?
За практични цели, замислете канта за ѓубре, јама без дно или вселена во која треба да фрлате што било, без можност да ја вратите (без оглед колку се обидуваат момците на НАСА).
Но, ако веќе имам команди како rm, зошто сакам нешто ново што ќе го избришам?
Бидејќи начинот на работа на обете „црни дупки“ е сосема поинаков: како би се обиделе да го надминете стандардниот излез на грешка во командата во скриптата за школка при извршувањето? Ова е местото каде што влегува / dev / null.
Ајде да го видиме со пример.
Создадовме датотека наречена тестови што ја содржат низата „Здраво свет“. Ако сакаме да ја претставиме содржината на таа датотека на командната линија, можеме да го сториме тоа на следниот начин:
корисник @ лаптоп: ~ $ тест за мачка
Здраво свету
Ако датотеката не постоеше или беше именувана како тестови (со „s“ на крајот), ќе ја добиеме следнава грешка во конзолата:
корисник @ лаптоп: ~ $ тестови за мачки
cat: тестови: Датотеката или директориумот не постојат
Што би можеле да сториме за да ја избегнеме пораката за грешка? Па, едноставно пренасочете го излезот од командата, во случај на грешка, во „корпа за ѓубре“, тоа е на / dev / null
Како да наведеме да биде во случај на грешка? Ова е местото каде што ги внесувате стандардните вредности на влез, излез и грешка за програма: STDIN, STDOUT и STDERR (кои можат да бидат заменети со 0, 1 и 2, соодветно). На овој начин, ако ставиме ...
корисник @ лаптоп: ~ $ тестови за мачки 2> / dev / null
корисник @ лаптоп: ~ $
… Seeе видиме дека пораката за грешка нема да биде произведена на конзолата.
Треба да бидете претпазливи затоа што синтаксата е неопходна: помеѓу знаците 2 и> не треба да има простор. Во спротивно, тоа ќе го даде следново:
корисник @ лаптоп: ~ $ тестови за мачки 2> / dev / null
cat: тестови: Датотеката или директориумот не постојат
cat: 2: Датотеката или директориумот не постојат
Спротивно на тоа, празно место помеѓу> и / dev / null нема да влијае негативно на резултатот.
Можеме да користиме и пренасочување на грешки, на пример, за снимање грешки во датотека за евиденција како што следува:
корисник @ лаптоп: tests $ тестови за мачки 2> ер.лог
Друг интересен случај би бил собирање на резултати во друга датотека се додека не настане грешка, за што би поставиле:
корисник @ лаптоп: test $ тест за мачка 1> излез_резултат 2> ер.лог
Конечно, вреди да се стави изразот «> / dev / null 2> & 1» во кој се комбинираат стандардниот излез и излезната грешка, пренасочувајќи ги така што во никој случај не се добиваат излезните информации.
8 коментари, оставете ги вашите
Ах, но недостасува една од најкористените комунални услуги што ја има / dev / null, а тоа е испразнување на датотеки: $ cat / dev / null> file.log На овој начин, датотеката file.log ќе биде празна. Додај го!
Тоа беше токму објаснувањето што тој го бараше.
Јас го поддржувам предлогот да го додадете =)
Честитки!
Здраво, пред сè статијата е многу добра! вториот би сакал да придонесам нешто со оваа врска на оваа тема cron job во php од Cpanel и трета честитка за блогот!
Убав напис за dev / null, каков срам мислам дека погрешно коментирав на погрешно место порано! се извинувам
благодарам добар придонес
Поздрав добивам ништовен напад. Јас користам andrirc и добивам приватник од прекарот со зборот Null. 2 секунди подоцна, програмата се затвора, јас читав и според она што го гледам, ова може да го направи само Шел, а не некој надворешен. Се обидов да се игнорирам себеси / игнорирај -lrpcntikd и Ништо не ме изненадува командата продолжува да доаѓа. Ако имате каков било начин да се обидете да го блокирате, јас би го ценел тоа. На здравје
Што се случува ако при извршување на реченицата не се постави симболот>?
Може ли некој да ме води, ве молам?
Добро утро, инсталирав Debian netinst во ACER Extensa 5620Z – 32 bit. Откако ќе заврши инсталацијата од USB и ќе се отстрани pendrive за да се подигне од хард дискот (не инсталирај повторно од пенкало) туку во моментот на подигање системот што таа ме прашува:
Најава за debian: xxxxxxxx (во ред)
Лозинка: xxxxxxxx (во ред)
nil@debian:~$ ???? што е ова? Што да ставам таму?
Без оваа команда не можам да продолжам со подигањето на системот.
Можете ли да ми помогнете? Не знам како да продолжам.
Ти благодарам многу. Со почит.