За креирање новог директоријума користи се команда 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
На страници број пет, приликом описа излаза команде 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*
Задатак је решен! Следећи>>