Креирање директоријума

За креирање новог директоријума користи се команда mkdir. Линукс прати Јуникс философију - све је фајл, тако да се може рећи да је директоријум посебна врста фајла. Имена фајлова, односно директоријума могу садржати било који карактер који се може приказати на терминалу, осим знака / који се користи за одвајање директоријума у оквиру путање. Ипак, препоручљиво је да имена садрже само алфанумеричке карактере без размака између речи у имену! Уколико се име састоји из више речи, може се користити цртица (-) уместо празног места. Ако баш инсистирате на коршћењу размака у именима фајлова, потребно је да при креирању директоријума име наведете под знацима навода, али немојте после да кажете да нисте били упозорени... :)

Важно је напоменути и да Линукс прави разлику између великих и малих слова, па је препоручљиво да се увек користе мала слова при именовању.


Задатак

Креирајте нови директоријум под називом moj-dir.


Приказ решења

mkdir moj-dir


Савет

Користите команду ++ за прелазак на следећи задатак, a -- за враћање назад. Ово нису стандардне Линукс команде, већ команде уведене како не бисте морали да склањате руке са тастатуре.


Промена активног директоријума

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

Пример апсолутне путање је /home/bpp. Апсолутна путања увек почиње рут директоријумом који је једини директоријум са именом /, које се иначе користи за раздвајање директоријума у оквиру путање.

Релативне путање могу почети једном од пречица ~, .., ., или једноставно само именом директоријума који се налази у оквиру тренутно активног.

За приказивање путање до тренутно активног директоријума користи се команда pwd.


Задатак

Уђите у директоријум moj-dir који се налази у оквиру Вашег личног (home) директоријума. Уколико moj-dir не постоји, вратите се на задатак 1.


Приказ решења

cd ~/moj-dir


Савет

Да бисте очистили садржај екрана притисните комбинацију тастера ctrl+l или извршите команду clear.


Преусмеравање излаза у фајл

Линукс љуска користи специјалне карактере за преусмеравање стандардног излаза и улаза. Када се логујете на систем Ваш стандардни улаз је постављен тако да представља оно што куцате на тастатури, а стандардни излаз је постављен да представља екран за приказивање.

За преусмеравање излаза неке комаде у фајл користи се карактер >. Узмимо као пример наредбу echo "Ovo ide u fajl" > ime-fajla. У приказаном примеру резултат извршења команде echo био би уписан у фајл уместо да буде приказан на екрану. Уколико фајл са наведеним именом већ постоји, његов садржај се брише и уисује нови, а уколико фајл не постоји онда се креира нови.

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

За решавање постављеног задатка, поред већ поменуте команде echo, биће Вам потребна и наредба cat. Наредба cat омогућава навођење путање до фајла који ће се користити као улаз. Ова команда податке са улаза једноставно прослеђује на излаз. На пример, наредба cat ime-fajla би приказала садржај фајла на екрану.


Задатак

Креирајте фајл moj-fajl у оквиру свог директоријума /home/bpp и упишите у њега текст Zdravo svete! Након тога, на крај фајла moj-fajl додајте садржај фајла /tmp/molba.


Приказ решења

echo Zdravo svete! > ~/moj-fajl
cat /tmp/molba >> ~/moj-fajl


Пресумеравање грешке у фајл

Програми користе стандардни излаз за приказ резултата обраде, а за приказ порука о грешкама користе стандардни излаз за грешке. Поруке о грешкама се такође могу преусмерити у фајл. Фајлови на Линукс систему имају свој нумерички дескриптор. Тако, дескриптор стандардног улаза је 0, излаза 1, а излаза за грешке је 2. Да би се поруке о грешкама преусмериле у фајл користе се, као и претходном примеру, знакови за редирекцију > и >>, с тим да се испред знака за редирекцију наводи нумеричка ознака фајл дескриптора 2>. Уколико је потребно преусмерити оба излаза у фајл, уместо нумеричке ознаке фајл дескриптора користи се амперсанд &>


Задатак

Корисник bpp, односно Ви, власник је фајла /tmp/zabranjeno. Фајл има забрану читања и писања. Затражите од система да прикаже садржај фајла zabranjeno на екрану и преусмерите добијену поруку о грешци у фајл ~/greska


Приказ решења

cat /tmp/zabranjeno 2> ~/greska


Савет

Преусмеравања &> fajl, >& fajl и fajl 2>&1 производе исти резултат, али наш емулатор подржава само први облик, који је уједно и најчешће коришћени и препоручени начин преусмеравања.


Листање фајлова и директоријума

За добијање информација о садржају директоријума и информација о регуларним и осталим фајловима, може се користити команда ls у комбинацији са различитим параметрима.

Позив команде ls без икаквих параметара, приказује листу фајлова и поддиректоријума који се налазе у тренутно активном директоријуму.

Као параметар команда ls може да прихвати путању до фајла или директоријума и у том случају приказује атрибуте наведеног фајла или садржај наведеног директоријума.

Такође, навођењем опција команда ls може приказивати резултате у различитим форматима. Једна од чешће коришћених опција је опција l (ls -l) која се користи за приказивање листе у проширеном формату. Проширени формат укључује: дозволе фајлова, број хард линкова, корисничко име власника, назив групе, величину фајла, време измене и име фајла.

Први знак у колони дозвола означава тип фајла. Карактер d означава директоријум, а - означава регуларни фајл (пoстоје и друге ознаке, али ове две су најчешће). Следећих девет знакова је подељено у три групе. Прва група представља дозволе за корисника, друга за групу и трећа за све остале. Свака група може имати постављен или искључен бит за читање r, писање w и покретање x. На пример, дозволе rwxr-xr-- значе да корисник има дозволе за читање, писање и покретање, група за читање и покретање, а сви остали имају дозволу само за читање.


Задатак

Направите фајл lista у оквиру свог хоум директоријума и у њега упишите садржај рут директоријума (/). Садржај треба да буде у проширеном формату (опција l)


Приказ решења

ls -l / > ~/lista


Преусмеравање улаза

Као што је могуће преусмерити излаз у фајл, на сличан начин могуће је преусмерити садржај фајла у улаз. За преусмеравање улаза користи се оператор <. На пример, наредбом cat < fajl, садржај фајла је преусмерен у стандардни улаз, који је затим предат програму cat. Након извршења команде садржај фајла биће исписан на стандардном излазу.

Програм grep се користи за претрагу текста на основу наведеног узорка, при чему се линије текста које задовољавају услов претраге приказују на стандардном излазу. Основни облик команде је grep uzorak ulazni-fajl. У тренутној верзији емулирани програма grep може да чита текст само из стандардног улаза, па је неопходно извршити преусмеравање. Такође, једина опција коју емулирани програм разуме је опција grep -E. Навођењем ове опције сигнализира се програму греп да ће се приликом навођења узорка претраге користити проширена синтакса регуларних израза.

Узорак претраге, односно регуларни израз, може садржати слова, бројеве и специјалне знакове. Специјални знак ^ одговара почетку линије, $ крају линије, . одговара било којем знаку из улазног текста, знак * се наводи иза знака или групе и означава њихово понављање нула или више пута.


Задатак

Фајл /tmp/jezici садржи листу програмских језика са одговарајућим описима. Издвојити из листе редове који садрже императивне програмске језике и уписати их у фајл ~/jezici/imperativni


Приказ решења

mkdir ~/jezici
grep imperativni < /tmp/jezici > ~/jezici/imperativni


Савет

Регуларни изрази су комплексна област и заслужују посебну пажњу. Овде су изложене тек основе, неопходне за решавање овог и задатака који следе.


Цевоводи

McIlroy, изумитељ Јуникс цевовода (пајпова), формулисао је Јуникс философију на следећи начин: Ово је Јуникс философија: Писати програме који раде само једну ствар и раде је добро. Писати програме који раде заједно. Писати програме за обраду токова (стримова) текстуалних података, јер је то универзални интерфејс.

Да би претворио једноставне команде у моћан скуп алата, Линукс омогућава кориснику да излаз једне команде користи као улаз за другу. Оваква веза зове се цев (pipe), а низ команди повезаних цевима представља цевовод (pipeline). За повезивање команди у цевовод користи се знак |.

У следећем примеру цевовода: echo "zdravo svete" | grep zdravo програм echo узима као параметар текст zdravo svete и уместо на стандардни излаз, односно екран, текст шаље путем цеви команди grep. Команда grep препознаје реч zdravo из текста, па зато приказује цели ред на екрану, а препознату реч маркира другом бојом.


Задатак

Из фајла /tmp/jezici издвојити све програмске језике који почињу великим латиничним словом це C и који су настали осамдесетих година прошлог века. Резултат уписати у фајл ~/jezici/clang.


Приказ решења

mkdir ~/jezici
grep ^C < /tmp/jezici | grep "198." > ~/jezici/clang


Савет


Дозвола x за директоријуме

На страници број пет, приликом описа излаза команде ls описане су rwx дозволе. Бит r означава дозволу за читање фајла, w писање, а x покретање фајла. Групе дозвола се наводе за корисника, групу и за све остале. Дозволе

С обзиром да су директоријуми посебна врста фајла, исте дозволе се односе и на њих, као и на регуларне фајлове, уз одређене разлике у значењу појединих битова. Уколико корисник нема дозволу r за дати директоријум, он неће моћи да излиста садржај тог директоријума. Уколико нема дозволу w, корисник неће моћи да креира нове фајлове или брише постојеће из директоријума. Ове забране не утичу на приступ постојећим фајловима. Међутим, уколико корисник нема дозволу x (eXecute) за дати директоријум, комплетан садржај тог директоријума ће му бити недоступан.

Бит x у случају регуларних фајлова означава дозволу за покретање и има значај само када фајл представља извршни програм.


Задатак

Уписати у фајл ~/dozvoljeno листу директоријума чији је садржај доступан свим корисницима, а који се налазе испод кореног, односно рут директоријума /.


Приказ решења

ls -l / | grep -E "^d.{8}x" > ~/dozvoljeno


Промена дозвола за приступ фајловима и директоријума

Управљање дозволама је веома важна тема јер од тога зависи сигурност читавог система. Линукс је вишекориснички оперативни систем, па је стога битно да сваки корисник има приступ само оним деловима који су неопходни за његов рад.

Право да мења дозволе фајла имају корисник root, који је администратор система и корисник који је је власник фајла. За мењање дозвола користи се команда chmod, у облику chmod dozvole putanja-do-fajla. Дозволе могу бити наведене у формату окталног броја или у облику симбола. Пример команде која узима октални број могао би да буде chmod 755 direktorijum, а пример команде која узима симболичку ознаку могао би да гласи chmod g+rx.

Октални бројни систем изабран је због једноставне конверзије из бинарног бројног система. Дозволе rwx чувају се као низови нула и јединица. Бинарна комбинација за дозволе rwx, гласи 111, за дозволе rw- гласи 110 итд. Свака од група дозвола се једноставно претвара у цифру окталног броја коришћењем формуле r*4 + w*2 + x*1 . Наведени пример chmod 755 direktorijum поставља директоријуму дозволе: rwxr-wr-w.

Симболичке ознаке се постављају тако што се иза команде chmod наведе за кога се ознака поставља: власника (u), групу (g) или остале (o). Након тога следи један од оператора: додавање дозволе +, уклањање (-) и оператор доделе (=) (који у овој верзији емулатора није имплементиран). Иза оператора се наводи комбинација битова дозвола rwx.


Задатак

Ископирати садржај фајла /tmp/zabranjeno у фајл ~/uklonjena-zabrana и омогућити свим корисницима читање фајла ~/uklonjena-zabrana.


Приказ решења

chmod u+r /tmp/zabranjeno
cat /tmp/zabranjeno > ~/uklonjena-zabrana


Савет

Наш емулатор тренутно не подржава опцију -R, која је веома корисна јер омогућава рекурзивно мењање дозвола комплетног садржаја директоријума.


Копирање фајлова и директоријума

За копирање фајлова и директоријума користи се програм cp. Основни облик команде је cp -opcije izvor odrediste

За копирање директоријума користи се опција -r, којом се рекурзивно копира комплетан садржај директоријума, што укључује и све поддиректоријуме.

Параметар извор представља путањуњ до фајла или директоријума који се копира. Путања се може завршити именом конкретног фајла или директоријума, али може садржати и џокер знаке * и ?. Звездица се поклапа са нула или више знакова, док знак питања може да стоји уместо тачно једног карактера у имену фајла. На пример, команда cp /dir/a* ~/kopirano копира све фајлове који почињу словом a у директоријум ~/kopirano


Задатак

Из директоријума /tmp/za-kopiranje ископирати фајлове молби, које имају екстензију txt и нумерисане су бројевима од 1 до 5, у директоријум ~/iskopirano.


Приказ решења

mkdir ~/iskopirano; cp /tmp/za-kopiranje/molba?.txt ~/iskopirano


Савет

Уколико желите да унесете више исказа одједном, исказе одвојите тачка запетом ;.


Брисање фајлова и директоријума

За брисање фајлова и директоријума користи се команда rm. Основни облик команде је rm -opcije putanja

За брисање директоријума користи се опција -r, којом се рекурзивно брише комплетан садржај директоријума. Покушај брисања директоријума без навођења опције -r производи грешку.

Путања, која се предаје команди као улазни параметар, може се завршити именом конкретног фајла или директоријума, а може садржати и џокер знаке * и ?. Исто као и у случају копирања, звездица се поклапа са нула или више знакова, док знак питања може да стоји уместо тачно једног карактера у имену фајла. На пример, команда rm /dir/a* брише све фајлове који почињу словом a из директоријума dir.


Задатак

Из директоријума /tmp/za-brisanje избрисати све фајлове и директоријуме који у свом имену садрже реч prazno.


Приказ решења

rm -r /tmp/za-brisanje/*prazno*


Задатак је решен! Следећи>>