Шта тачно ради 2>/дев/нулл?

What Exactly Does 2 Dev Null Do



Било да сте нови корисник Линука или искусни басх програмер, велика је вероватноћа да сте наишли на загонетну команду 2>/дев/нулл. Иако ова команда изгледа технички сложена, њена сврха је врло једноставна. Односи се на нулти уређај који се користи за потискивање излаза различитих команди. Овај чланак ће разбити сваки део наредбе 2>/дев/нулл, објаснити њену сврху и видети примере како се користи.

Нулл уређај - „/дев/нулл“

Сви системи засновани на Линуксу имају функцију која се назива виртуелни уређаји. Ови виртуелни уређаји комуницирају попут стварних датотека у оперативном систему. Рад таквих виртуелних уређаја сличан је стварним уређајима; користе се за писање и читање података. Главна разлика између ова два је у томе што податке за виртуелне уређаје испоручује оперативни систем.







/дев/нулл је нулти уређај - посебна врста виртуелног уређаја. Присутан је у сваком Линук систему, а сврха овог уређаја је да одбаци све што му се пошаље и прочита крај датотеке (ЕОФ). Већина виртуелних уређаја се користи за читање података; међутим, /дев /нулл је јединствено јер се користи за сузбијање свих података који су му записани. Једноставним речима, он делује као црна рупа за све податке који се на њега упишу у оперативним системима Линук.



Хајде сада да погледамо преостале делове команде 2> /дев /нулл



Дескриптор датотеке - „2“

Свако извршавање команде у Линук -у генерише три повезане датотеке: стандардни улаз, стандардни излаз и стандардне датотеке грешака. Оперативни систем Линук се односи на сваку од ових датотека са јединственим неонегативним целим бројем.





  • '0' за стандардни улаз
  • '1' за стандардни излаз
  • '2' за стандардну грешку

Технички термини за стандардни улаз, стандардни излаз и токове грешака су стдин, стдоут и стдерр.

Знамо да се број „2“ у команди „2>/дев/нулл“ односи на стандардни ток грешке (стдерр).



Оператор преусмеравања датотека - „>“

Симбол '>' је познат као оператор преусмеравања датотека. Његова сврха је да оно што је лево усмери командама са десне стране. Једноставније речено, било који низ података лево биће усмерен на десну страну оператора.

До сада смо разумели сврху сваке компоненте наредбе 2>/дев/нулл. Он шаље ток грешке на /дев /нулл, који га одбацује. Другим речима, ова команда се користи за одбацивање и сузбијање грешака. Међутим, ако сте искусни Линук ветеран, можете погледати садржај /дев /нулл датотеке покретањем следеће наредбе у терминалу:

$лс -тхе /дев/нула

Ова команда се обично користи у сценаријима где морамо да филтрирамо излаз на основу грешака или када желимо да одбацимо било који излаз повезан са погрешним описима. Напредујући, погледаћемо примере његове употребе на Убунту систему.

Коришћењем 2>/дев/нулл

Пошто знамо да се наредба 2>/дев/нулл користи за одбацивање грешака, увек ће се користити заједно са другим командама. Сличан приступ видећемо у следећим примерима. Терминал можете отворити тако што ћете му приступити путем менија апликација или помоћу пречице на тастатури Цтрл + Алт + Т.

У првом примеру, извршићемо претрагу у / сис / директоријуму за случајни низ (у овом случају хелловорлд). Наредба за претраживање је греп, а њен аргумент биће низ за претрагу. Унесите следећу команду да бисте потражили свој низ.

$дршка Здраво Свете/сис/

Ова наредба за претраживање мора приказати бројне грешке јер се користи без роот приступа. Послаћемо његов ток грешака на/дев/нулл помоћу команде 2>/дев/нулл да одбацимо ове грешке.

$дршка Здраво Свете/сис/ 2> /дев/нула

Видимо да је излаз наредбе много уреднији и једноставнији од претходне. Разлог је тај што се грешке одбацују коришћењем 2> /дев /нулл, а пошто греп команда није успела да пронађе ниједну датотеку која одговара нашем низу „хелловорлд“, не приказује излаз.

Да бисмо боље разумели употребу /дев /нулл, погледаћемо следећи пример пингања било које веб локације (у нашем случају гоогле.цом). Можете пингати гоогле.цом извршавањем следеће наредбе:

$пингГоогле цом

Ако желимо да искључимо све неуспешне пингове, можемо користити команду 2>/дев/нулл:

$пингГоогле цом2> /дев/нула

У овом случају, стандардни ток грешке (који приказује неуспеле пингове на гоогле.цом) шаље се на виртуелни уређај /дев /нулл који их одбацује.

Међутим, ако желимо да видимо само неуспешне пингове, можемо извршити следећу команду:

$пингГоогле цом1> /дев/нула

Овде шаљемо стандардни излазни ток (стдоут) на /дев /нулл уређај који га одбацује. Сходно томе, преостају нам само пингови који нису успели да дођу до сервера гоогле.цом. Међутим, у нашем случају није било неуспешних пингова. Такође можемо усмерити стдоут и стдерр на различите локације. Ово је корисно ако желимо одбацити излазне податке и похранити грешке у дневник или обрнуто. Можете покренути следећу команду за складиштење неуспелих пингова у евиденцији грешака док одбацујете стандардни излаз наредбе пинг:

$пингГоогле цом1> /дев/нула2>еррор.лог

Понекад ћете можда желети да потиснете сав излаз наредбе (укључујући стандардни излаз и стандардне грешке). То можемо постићи коришћењем /дев /нулл уређаја на мало другачији начин. Можете да откуцате следећу команду да бисте потиснули сав излаз:

$пингГоогле цом> /дев/нула2> &1

Имајте на уму да је редослед команди овде веома важан. Након извршавања пинг команде, '>/дев/нулл' говори систему да потисне излаз, а '2> & 1' усмерава стандардни ток грешке на стандардни излаз. На овај начин се одбацује сав излаз наредбе.

Закључак

Раздвојили смо наредбу 2>/дев/нулл и једноставне примере у овом чланку, и надамо се да сте сада разумели шта сваки њен део ради. Међутим, ово је само врх леденог брега; нулл уређаји се користе на много начина у басх програмирању. Неке од напреднијих употреба укључују провјеру постојања датотека, аутоматизацију инсталације пакета и избјегавање наиласка скрипти на нежељене изузетке.