Један такав пример је / дев / нулл. То је посебна датотека која је присутна у сваком појединачном Линук систему. Међутим, за разлику од већине других виртуелних датотека, уместо за читање, користи се за писање. Све што напишете у / дев / нулл биће одбачено и заборављено у празнину. Познат је као нулти уређај у УНИКС систему.
Зашто бисте желели да нешто одбаците у празно? Проверимо шта је / дев / нулл и његова употреба.
Предуслови
Пре него што заронимо дубоко у употребу / дев / нулл, морамо га јасно разумети стдоут и стдерр ток података. Погледајте овај детаљни водич на стдин, стдерр, и стдоут.
Идемо на брзину да се освежимо. Кад год се покрене било који услужни програм командне линије, он генерише два излаза. Излаз иде на стдоут а грешка (ако је генерисана) иде на стдерр. Оба ова тока података су подразумевано повезана са терминалом.
На пример, следећа наредба ће исписати низ унутар двоструког наводника. Овде се излаз чува у стдоут.
$ ецхо „Хелло Ворлд“
Следећа команда ће нам показати статус излаза из претходно покренуте команде.
$ ецхо $?
Како се претходна команда успешно изводила, статус излаза је 0. У супротном, статус излаза ће бити другачији. Шта се дешава када покушате да покренете неисправну команду?
$ адфадсф$ ецхо $?
Сада морамо знати о опису датотеке. У УНИКС екосистему то су целобројне вредности додељене датотеци. Обоје стдоут (дескриптор датотеке = 1) и стдерр (дескриптор датотеке = 2) имају одређени дескриптор датотеке. Помоћу дескриптора датотеке (1 и 2 у овој ситуацији) можемо преусмерити датотеку стдоут и стдерр у друге датотеке.
За почетак, следећи пример ће преусмерити стдоут наредбе ецхо у текстуалну датотеку. Овде нисмо навели дескриптор датотеке. Ако није наведено, басх ће користити стдоут подразумевано.
$ ецхо “Хелло Ворлд”> лог.ткт
Следећа команда ће преусмерити стдерр у текстуалну датотеку.
$ асдфадса 2> грешка.ткт
Коришћење / дев / нулл
Преусмеравање излаза на / дев / нулл
Сада смо спремни да научимо како да користимо / дев / нулл. Прво, хајде да проверимо како да филтрирамо нормални излаз и грешке. У следећој наредби, греп ће покушати да тражи стринг (здраво, у овом случају) у директоријуму „/ сис“.
$ греп -р здраво / сис /
Међутим, генерисаће пуно грешака, јер без привилегија роот-а греп не може приступити одређеном броју датотека. У том случају, резултираће грешкама „Дозвола је одбијена“. Сада, користећи преусмеравање, можемо добити јаснији излаз.
$ греп -р хелло / сис / 2> / дев / нулл
Излаз изгледа много боље, зар не? Ништа! У овом случају, греп нема приступ великом броју датотека, а они којима је доступан немају низ „здраво“.
У следећем примеру ћемо пингати Гоогле.
$ пинг гоогле.цом
Међутим, не желимо да видимо све оне успешне пинг резултате. Уместо тога, желимо да се фокусирамо само на грешке када пинг није могао да дође до Гоогле-а. Како то радимо?
$ пинг гоогле.цом 1> / дев / нулл
Овде је садржај стдоут су одбачене у / дев / нулл, остављајући само грешке.
Преусмери све излазе на / дев / нулл
У одређеним ситуацијама излаз можда неће бити користан. Користећи преусмеравање, можемо све излазе избацити у празнину.
$ греп -р хелло / сис /> / дев / нулл 2> & 1
Хајде да мало разбијемо ову наредбу. Прво, бацамо све стдоут у / дев / нулл. Затим, у другом делу, кажемо басху да пошаље стдерр до стдоут. У овом примеру нема ништа за излаз. Међутим, ако сте збуњени, увек можете да проверите да ли је команда успешно покренута.
$ ецхо $?
Вредност је 2 јер је наредба генерисала пуно грешака.
Ако сте склони да заборавите дескриптор датотеке стдоут и стдерр, следећа команда ће бити сасвим у реду. То је општији формат претходне наредбе. Обоје стдоут и стдерр биће преусмерен на / дев / нулл.
$ греп -р хелло / сис / &> / дев / нулл
Остали примери
Ово је занимљиво. Запамтите алатку дд? Моћан је алат за претварање и копирање датотека. Сазнајте више о дд. Користећи дд, можемо тестирати секвенцијалну брзину читања вашег диска. Наравно, то није тачно мерење. Међутим, за брзи тест је прилично користан.
$ дд ако =
Овде сам користио Убунту 18.04.4 ИСО као велика датотека.
Слично томе, можете и да тестирате брзину преузимања интернет везе.
$ вгет -О / дев / нулл
Последње мисли
Надамо се да добро разумете шта је ово / дев / нулл датотека. То је посебан уређај који, ако се на њега напише, одбаци, а ако се чита са њега, чита нулу. Прави потенцијал ове занимљиве функције је у занимљивим басх скриптама.
Да ли сте заинтересовани за басх скриптовање? Погледајте почетни водич за басх скриптовање.
Уживати!