Unix (Linux) lühikonspekt

Vaatluse alla tulevad tekstiterminalilt (e. käsurealt) sisestatavad käsud.

Seansi alustamine ja lõpetamine

Seansi alustamine

login: kasutajanimi (reavahetus lõppu)

Password: parool (ei näidata ekraanil)

Seansi lõpetamine

logout või exit

 

Failid, kataloogid, seadmed

Failisüsteem on organiseeritud puuna, füüsilised kettaseadmed pole lihtkasutajale olulised - failisüsteemi ehitamine (mounting) on üldjuhul administraatori töö.

Andmete (failide) lugemiseks/kirjutamiseks/otsimiseks peab teadma kataloogi, milles andmed paiknevad.


Kataloog (directory):

failisüsteemi loogiline osa, üks tipp kataloogide puus.

Igal kataloogil on omanik ja juurdepääsuõigused.

Juurkataloog (root directory, nimega / ): kataloogide puu juur, failisüsteemi algus.

Alamkataloog (subdirectory): iga kataloog võib failide kõrval sisaldada ka alamkatalooge - nende nimed olgu üksteisest erinevad.

Kodukataloog (home directory, C-shellis nimega ~ ): igale kasutajale määratakse kindel "lähtepunkt" failisüsteemis.

Jooksev kataloog (working directory, current directory, nimega "punkt": . ): parasjagu aktuaalne kataloog, algselt enamasti kodukataloog. Muutmiseks käsk cd (edaspidi pikemalt).

Ülemkataloogi (parent directory) nimi on "kaks punkti": ..

Tee (path) - liitnimi, millega määratakse kataloogi asukoht puus (eraldajaks / ):

Absoluutne tee - algab juurkataloogist ( /... )

Suhteline tee - algab kodukataloogist ( ~... ), jooksvast kataloogist ( ./ ... ) või ülemkataloogist ( ../ ... )

Näiteks:

/usr/local/lib (absoluutne)

~/Mail (kodukataloogist lähtuv)

./bin (jooksvast kataloogist alla)

bin (sama, programmide käivitamise koha pealt siiski erinev)

../../programs (jooksvast kataloogist üles)


Failid - kõige üldisem jaotus:

Igal failil on omanik ja juurdepääsuõigused.

Nimed on suhteliselt vabalt valitavad, suur- ja väiketähed olulised.

Punktiga algavad nimed "peidetud".

Käsuinterpretaatori erisümboleid (metamärke) pole soovitav nimedes kasutada (täpsustame hiljem, tähed-numbrid-allakriips sobivad).

Hoiduda:

& ; | * ? ` " [ ]( ) $ < > { } % ! # @ \

Seadmed - erilised failid /dev kataloogis.

Loogilist vahet failide ja välisseadmete vahel UNIXis ei ole.

Näit. /dev/sda /dev/sdb /dev/null

Link - analoog MS Windows "shortcut"

Lisaks alamkataloogidele, failidele ja seadmetele võivad kataloogis olla veel viidad (link) teistele objektidele: see on üks võimalus objektide jagamiseks ning sünonüümide tekitamiseks.
 


Unix - juurdepääsuõigused

Näit. kui kataloogi jaoks pole lugemisõigust, aga on otsimisõigus, siis saab selle kataloogi failidele ligi, kui teada faili täpset nime.

Need kolm õigust määratakse iga taseme jaoks (user, group, others).

Juurdepääsuõiguste muutmine on omaniku (aga ka administraatori) privileeg.

Õiguste näitamiseks on kasutusel 10-märgiline esitus, õiguste muutmiseks saab kasutada kaheksandkoodi ning sümbolesitust.

Kõik nimetatud viisid on kokku võetud järgmises tabelis:

-r-------- 400 u+r

--w------- 200 u+w

---x------ 100 u+x

----r----- 040 g+r

-----w---- 020 g+w

------x--- 010 g+x

-------r-- 004 o+r

--------w- 002 o+w

---------x 001 o+x

Näiteks:

drwxr-x--- - kataloog, millele omanikul on kõik õigused, rühmal on lugemise ja otsimise õigus, kõigil teistel pole mingeid õigusi. Kood 750.

Esimene märk näitab faili tüüpi (d - kataloog, - - tavaline fail, l - link (BSD), b, c - seadmed jne)

Õiguste komplekti näeb käsuga ls -l (edaspidi pikemalt).
 


Käsurida

Kasutaja poolt käsureale sisestatavaid käske, samuti käsufaile (nn. shell-programmid, skriptid, stsenaariumid, ...), täidab käsuinterpretaator ("koorik") - shell.

Enne käsu täitmist asendatakse käsureas olevad metamärgid vastavalt nende tähendusele.

On olemas erinevaid käsuinterpretaatoreid - sh, csh, ksh, zsh, tcsh, ...

Käsu üldkuju

Lihtsamal juhul koosneb käsurida käsu nimest (näit. ls), täpsustavatest lippudest e. suvanditest (flags, näit. -l) ning muudest parameetritest (näit. failinimed).

käsk -lipud parameetrid

ls -l /usr
 

standardsisend (0 - stdin)
standardväljund (1 - stdout)
veaväljund (2 - stderr)
 

Üldjuhul töötleb käsk mingeid sisendandmeid ning väljastab tulemuse ja võimalikud veateated väljunditesse. 

Standardsisendiks on klaviatuur, standardväljundiks ja veaväljundiks terminaal. Sisendit ja väljundeid saab ümber määrata.

Käsuinterpretaatori metamärgid, käsk echo

Enne käsu täitmist asendab käsuinterpretaator kõik käsureal olevad erisümbolid vastavalt nende tähendusele.

Metamärgid * ? [ ] on kasutusel failinimede genereerimiseks:

* väljendab mistahes märgijada (s.h. tühja)

? väljendab mistahes (täpselt üht) märki

[märgid] lubab valida ühe kantsulgudes olevatest märkidest

Näit. Kui jooksvas kataloogis on failid

kiri1 kiri2 kiri10 Ptk4.txt ptk5.txt .login

siis genereeritakse nimesid järgmiselt:

*       kiri1 kiri2 kiri10 Ptk4.txt ptk5.txt

kiri?    kiri1 kiri2

kiri*        kiri1 kiri2 kiri10

[Pp]tk*      Ptk4.txt ptk5.txt

*.*     Ptk4.txt ptk5.txt

.*           .login

Ülakomade ' abil saab teksti "peita" laiendamise eest

'siin sees ei ole * ? jne. metamärgid'
Käsu täitmise tulemus (standardväljund) saadakse käsureale "tagurpidi ülakomade" abil:
 
`käsk`    annab tulemuseks selle käsu väljundi.


Muutujate väärtusi saab lugeda metamärgi "dollar" abil:
 

$PATH                    annab tulemuseks muutuja PATH väärtuse.


Et testida metamärkide asendamist võib kasutada käsku echo, mis peegeldab oma argumendi(d) standardväljundisse:

echo käsurida           toimel tehakse kõik asendused käsureas ning kuvatakse see siis standardväljundisse.
 
 

Käsud dokumentatsiooni vaatamiseks

man                 - täisinfo käsu vm. kohta. Juhendid on organiseeritud peatükkide kaupa. vt. ka xman

man käsk                              - tavaline kuju

-k  võtmesõna võtmesõna järgi

-f  failinimi süst. faili kohta

-s ptk.nr  käsk          ptk. äranäitamine

whatis käsk           - lühiinfo käsu kohta

apropos võtmesõna - info otsimine võtmesõna järgi

whereis failinimi  - käsuga seotud failide otsimine

which käsk         - käsu asukoha täpsustamine (kas alias, millises kataloogis)
 

Märkus. Kõik käskude kujud selles konspektis mittetäielikud (lihtsustatud).

Täisinfo kõigist võimalustest ja konkreetse süsteemi iseärasustest saab käsuga man.
 

Käsud tööks kataloogide ja failidega

Detailid:

ls [-alrtuR ...] [ failinimi ... ]

r - reverse, tagurpidi järjekorras

t - viimase muutmise aja järgi

u - viimase kasutamise aja järgi

....

pwd - print working directory

cd [kataloog] - change directory, ilma argumendita kodukataloog

cat failinimi ... - ühendada failid standardväljundisse (sageli tekstifailid)

more [failinimi ...] - sama dialoogiga

tühik - uus lehekülg

reavahetus - uus rida

b - lehekülje võrra tagasi (ei pruugi alati töötada, vt. ka less)

q - lõpetada

/regulaaravaldis - otsimine

h - help

         Failinime puudumisel standardsisend.

mkdir kataloog ... - luua kataloog(id), eeldab otsimis- ja kirjutamisõigusi ülemkataloogis. Tekivad . ja ..

rmdir kataloog ... - eemaldada kataloog(id). Eemaldab ainult tühja kataloogi (vrd. rm -r )

cp [-i] lähtefail tulemusfail

lähtefail ... kataloog

mv [-if] lähtefail tulemusfail

lähtefail ... kataloog

lähtekataloog tulemuskataloog

rm [-rfi] failinimi ... - eeldab kirjutamisõigust vastavas kataloogis

-r - eemaldab kataloogid ning nende sisu rekursiivselt (ohtlik!)

ln [-s] failinimi [viit]

failinimi ... kataloog

Kui viit puudub, siis jooksvasse kataloogi sama nimega.

chmod õigused failinimi...

chown uusomanik failinimi ...

Käske chmod ja chown täidab omanik (või root).

Õigused (vt. ka eespool):

+ - anda õigus

- - võtta õigus ära

= - anda täpselt määratletud õigused, võttes kõik ülejäänud ära

r - read

w - write

x - execute

s - set user ID - ajutine omanikumuutus programmi täitmise ajaks

u - user

g - group

o - others

a - all ( a = ugo )

Näit. chmod u=rwxg=rxo= lecture

chmod 750 lecture
 
 

Töö mõnede välisseadmetega

Mälupulk haagitakse Ubuntus  /media kataloogi alla, kasutaja õigustes.

Multikasutusest tuleneb ressursside jaotamise vajadus - järjekorrad, lukud, jpms.

Detailid

lpr [-Pprinter] [-Ttitle] [filename ... ]

(lubatud on veel palju mitmesuguseid lippe)

Eeldab printeri olemasolu ja kasutaja õigust printerile väljastada.

Printeritöö omanik võib numbri järgi töö eemaldada (numbrid vt. lpq abil):

lprm number ...



Regulaaravaldis

Regulaaravaldis (regular expression) kirjeldab mustrit ("näidist") sõnetöötluses (näit. otsimis- ja asendusoperatsioonides).

Lihtsustatud samm-sammuline definitsioon algab ühesümbolilise avaldise defineerimisega ning annab seejärel vahendid keerukamate avaldiste moodustamiseks.

Ühesümboliline avaldis

Iteratsioon

ühesümboliline_avaldis*
Null või enam korda seda ühesümbolilist avaldist

Konkatenatsioon
avaldis1 avaldis2

Avaldis rea alguses

^avaldis

Avaldis rea lõpus

avaldis$
Näit.
[a-zA-Z][a-zA-Z0-9]* - identifikaator (lihtsustatud)

^\.$ - täpselt ühest punktist koosnev rida
 

Käsk grep

grep [-lipud] regexp [failinimi... ]
Otsida tekstifaili(de)st read, mis rahuldavad antud regulaarset avaldist ("vastavad etteantud mustrile"). Vaikimisi on sisendiks standardsisend, väljundiks standardväljund.

Regulaaravaldis on soovitav kirjutada ülakomade vahele, et segadust metamärkidega (näit. tärn) vältida.

Lipud:

-v - vastupidine, s.t. väljastada read, mis EI vasta mustrile

-c - ridade asemel näidata ainult nende arv

-l - näidata ainult nende failide nimed ühekordselt, milles leidub sobivaid ridu

-n - näidata ka reanumbreid

-i - ignore case - lugeda suur- ja väiketähed samaks

-s - silent - tulemust ei väljastata, töötatakse välja ainult lõpetamiskood (0 - leidus, 1 - ei leidunud, 2 - viga)


Näit.
 

grep -i 'Jaanus' aruanne*

grep -c \. tekst (kas annab punktide arvu tekstis?)
 

Käsk find

find kataloog ... tingimused

Kataloogi(de)ga määratakse alampuu(d), millest otsida tingimusi rahuldavaid faile. Peab olema õigus otsida.

Tingimused ühendatud loogiliste tehete abil, tühik tähendab konjunktsiooni.

Tingimused:

tingimus1 tingimus2 - konjunktsioon

tingimus1 -atingimus2 - sama

tingimus1 -o tingimus2 - disjunktsioon

\( tingimus \) - sulud täpsustamiseks

! tingimus - eitus

Arvuliste argumentide tõlgendus:
+n - rohkem kui n

-n - vähem kui n

n - täpselt n

Konkreetsed tingimused puudutavad faili (kataloogi) nime, tüüpi, õigusi, viidete arvu, suurust, loomis- jm. aegu, omanikku jpms.

Elementaarsed tingimused:

-name  failinimi                    - konkreetse nimega

-name 'mitmene_nimi'          - näidis

-print                                       - väljastab tulemuse (tee) nende failide jaoks, mis rahuldavad EELNEVAID tingimusi (tavaliselt viimane)

-type [fdbc ... ]                     - tüüp: f - tavaline fail, d - kataloog, b c - seadmed, ...

-perm  kaheksandkood          - õigused

-links arv                               - viitade arv

-user nimi                               - omanik

-size arv [c]                           - suurus (c- sümbolites)

-atime arv                                 - access time (päevades)

-mtime arv                                 - modification time (päevades)

-ctime arv                                  - loomisaeg

-newer failinimi                      - muudetud hiljem kui antud faili

-exec käsk  \;                         - täita käsk, jooksva faili nimeks kasutada {}

-ok käsk\;                                - täita käsk loa küsimisega


Näit.

find . -name 'a*' -print

find / \( -user jaan -o -user juku \) -print -ok rm {} \;

find / -perm 666 -print

find / -size +10000c -atime +5 -ok rm {} \;


Käsud tööks protsessidega

ps [-efal] [-u user] - System V

ps [-axgl] - BSD

jobs - C-shell, antud kasutaja tööd, numbrid %-ga

kill  [-signaal] PID    -9 kindel tapmine

kill [-signaal] %job - C shell korral

wait [PID]

nice [-n] käsurida

n = 1 .. 10 , mida suurem, seda madalam prioriteet


sleep sekundid

nohup käsurida

at aeg päev [week] käsufail

vt. ka crontab
bg %job - C shell, käivitada taustatööna

fg %job - C shell, tuua fookusesse


Käske informatsiooni saamiseks

cal [ kuu ] aasta
 
du  [-k] kataloog ...                                           hõivatud blokkide arv (-k  kilobaitides, s - summaarne)
 
df  [-k] kataloog | seade ...                              vabade - " -
 
who [ am i ]                                                         on ka lipud, vt. man who
 

Tekstitöötlus



Jaanus Pöial