1.0 Aknad ja terminalid
- Applications -> Süstem tools -> Terminal
- ALT-F1 (ALT-F2, ALT-F3 jne) avab virtuaalkonsooli.
Tagasi graafikasse saab ALT-F7 abil

1.1 Sisse ja välja logimine. Abi
- Avage virtuaalkonsool (ALT-F1)
- login: kasutaja_nimi
password: kasutaja_parool

$ man intro

tutvustab tähtsamate käsudega ja man struktuuriga.

$ exit

käsuga exit logisime ennast välja.

Administraatori õigusi võib saada kasutades käsu

$ su -

või logides sisse root kasutaja nime all

login: root
password: root_parool

#

trellidega prompt meenutab et olete root.

1.2 Failid

Unix tüüpi süsteemides seadmed, kaustad ja isegi mõned operatiivmälus
asuvad süsteemtabelid ja andmestruktuurid on sisuliselt failid.

1.2.1 Käsu formaat

Ringi saab vaadata käsude abil. Käsu formaat on enamus juhtumitel
selline

käsunimi -a -b --pikk_võti0 argument0 arg1 .. argN

kus üks sidekriips kasutatakse ühetähelistega võtmetega, ja kaks
sidekriipsu pikka võtme puhul.

1.2.2 Print work directory (pwd).

Näitab aktiivse kausta katalogipuus ( kohe peale logimist kasutaja
nimega "kasutaja" asub /home/kasutaja kaustas ning "root" kasutaja
kaustas nimega /root.

$ pwd

Kõik failid moodustavad puu-taolise struktuuri "/" nimelise juur
kaustaga. Selles kaustas asuvad sellised tähtsad kaustad nagu:

/bin programmid
/boot kernel (tuum)
/grub bootloader
/etc configuratsiooni failid
/X11 graafika
/home kasutajate kodukaustad
/lib teegid (libraries)
/mnt monteeri siin
/root root kodu
/sbin systeem programmid
/tmp ajutised failid
/proc kernel tabelid, switchid, raportid (asub RAM mälus)
/usr level 2
/bin
/sbin
/lib
/local level 3
/bin
/lib
/sbin
/src
/var log failid, cache ...

1.2.3. Change directory (cd).

Minna ühest kaustast teisse saab käsuga cd. Abiks on spetsiaalsed
kaustade nimed

. - jooksev kataloog
.. - üks kataloog ülesspoole (Linux maailmas puujuur on üleval
ning kroon all)
~ - enda kodukataloog
~foo - kasuja "foo" kodukataloog
/ - root kataloog ( failipuu juur)
/root - root kasutaja kodukataloog

Näide 1.

pwd oleme /home/kasutaja kaustas
cd /usr/share/doc oleme kaustas /usr/share/doc
cd .. oleme kaustas /usr/share
cd ../.. oleme kaustas /
cd boot oleme kaustas /boot
cd /grub sellist kausta siin pole, viga.
oleme seal kus olime (/)
cd grub oleme kaustas /boot/grub
cd ~ oleme tagasi (/home/kasutaja)

1.2.4 List files (ls)

ls ( -l, -d, -a)

Näide 1. Minna /boot kaustasse.
Teha lühike ülevaade jooksvast kaustast.

$ cd /boot
$ ls
config-2.6.26.5-45.fc9.i686 memtest86+-2.01
efi System.map-2.6.26.5-45.fc9.i686
grub vmlinuz-2.6.26.5-45.fc9.i686
initrd-2.6.26.5-45.fc9.i686.img

Näide 2. Teha pikk ülevaade /home/kasutaja/Desktop kaustast

$ ls -l /home/kasutaja/Desktop/
total 8
-rw-rw-r-- 1 kasutaja kasutaja 5701 2008-10-21 21:53 Pingviin

Viimane rida kajastab mitte ainult faili nime, kuid ka tema atribuute

- - spetsiaalne lipp näitab et tegu ei ole kaustaga
(d directory), plokk (b block) või järjestiku
(c character) seadmega, lingiga (l link).

r - faili omanikule on lubatud lugeda (r read) see fail
w - faili omanikule on lubatud kirjutada (w write) see fail üle
- - faili omanikule on keelatud käivitada (x execute) see fail

r - rühma liikmetele on lubatud lugeda see fail
w - rühma liikmetele on lubatud kirjutada see fail üle
- - rühma liikmetele on keelatud käivitada see fail

r - teistele kasutajatele on lubatud lugeda see fail
- - teistele kasutajatele on keelatud käivitada see fail
- - teistele kasutajatele on keelatud käivitada see fail

1 - failil on üks nimi

kasutaja - faili omanik on kasutaja
kasutaja - faili omanik kuulub kasutaja rühmasse

5701 - fail on 5701 baiti pikk
2008-10-21 - viimati muudetud 21 oktoobril 2008
21:41 kell 21:41

penguin - faili nimi on penguin

Näide 3. Teha pikk ülevaade /home/kasutaja kaustast koos varjatud
failidega

$ ls -la /home/kasutaja
total 152
drwx------ 26 kasutaja kasutaja 4096 2008-10-21 22:08 .
drwxr-xr-x 3 root root 4096 2008-09-20 18:00 ..
-rw------- 1 kasutaja kasutaja 392 2008-10-12 22:42 .bash_history
-rw-r--r-- 1 kasutaja kasutaja 18 2008-02-29 16:27 .bash_logout
-rw-r--r-- 1 kasutaja kasutaja 176 2008-02-29 16:27 .bash_profile
-rw-r--r-- 1 kasutaja kasutaja 124 2008-02-29 16:27 .bashrc
...
-rw------- 1 kasutaja kasutaja 1324 2008-10-21 20:00 .xsession-errors

Kui faili nimi algab punktiga, siis tegu on varjatud failiga.
Sellised failid kasutatakse tavaliselt keskkonna konfimiseks.

Failinime maskid kasutatakse ls väljundi piiramiseks.

* ükskõik mis sümbolid
? ükskõik mis sümbol
[A-D] suured tähed A kuni D

Näide 4. Näidata kõik failid /usr/bin kaustas mis algavad x,t või z
tähedega ja lõpevad d tähega

$ ls /usr/bin/[xtz]*d
/usr/bin/tload /usr/bin/xfd /usr/bin/xload /usr/bin/xwud
/usr/bin/xclipboard /usr/bin/xkbevd /usr/bin/xwd /usr/bin/xxd

-d võti kasutame siis kui tahame teada kausta atribuudid

Näide 5. Näidata /etc/X11 kausta atribuudid

$ ls -ld /etc/X11
drwxr-xr-x 6 root root 4096 2008-10-12 11:33 /etc/X11


1.2.5. Free RAM (free)

Näitab kui palju vaba operatiivmälu mul on võimalik kasutada.

Näide 1. 46MB vaba RAM

$ free
total used free shared buffers cached
Mem: 319904 273792 46112 0 12148 111132
-/+ buffers/cache: 150512 169392
Swap: 337356 0 337356

1.2.6. Disk Free (df)

Näitab kui palju vaba kettamälu mul on võimalik kasutada.

Näide 1. 1.4GB vaba esimesel partitsioonil

$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 3793824 2330412 1463412 62% /
tmpfs 159952 48 159904 1% /dev/shm
gvfs-fuse-daemon 3793824 2330412 1463412 62% /home/kasutaja/.gvfs

1.2.7. Disk Usage (du)

Näitab kui palju kettamälu on kasutatud kaustade hoidmiseks.

Näide 1.

# df -s /home/kasutaja
8868 /home/kasutaja/

Näide 2.

# du /etc/
8 /etc/cron.d
8 /etc/bash_completion.d
4 /etc/alternatives
28 /etc/yum.repos.d
...
92 /etc/ppp
196 /etc/mail
88424 /etc

1.3. Kas siin on midagi veel peale faile ?

1.3.1. Kooriku muutujad ja Environment.

Väiksemad infokogused võib ajutiselt hoida ka operatiivmälus
muutujate kujul. Nüüd ja edaspidi oletame et oleme valinud bash
kooriku, mis on vaikimisi valitud paljudes Linux distrotes.

Dazibao 1. BASH MUUTUJATE VÄÄRTUSED ON ALATI STRINGID

Näide 1. Muutujate loomine, väärtuste omistamine ja lugemine

# MINU_NUMBER=123
# MINU_NIMI=Kasutaja
# echo $MINU_NUMBER $MINU_NIMI
123 Kasutaja
# unset $MINU_NUMBER
# echo $MINU_NUMBER $MINU_NIMI
Kasutaja

1.3.2. Protsessid (ps)

Tutvudes Linuxiga, OS näeb mind protsessina - käivitatav fail mida OS
on RAM mällu laadinud ja andnud juhtimise üle. Antud juhul ma olen
BASH koorik, (/bin/bash fail). Selleks et OS ise kontrolli ei kaotaks
kasutatakse ajajaotamist protsesside vahel andes iga ühele töötada
teatud lühikese aja jooksul (1-100 ms). Selline mehanism võimaldab
parallelselt käivitada sadu ja tuhandeid protsesse.

Tutvume meie naabritega.

Näide 1. ps protsessi mina käivitasin ise.
Ta on rohkem minu (bashi) laps kui naaber.

$ ps
PID TTY TIME CMD
1887 pts/0 00:00:00 bash
2028 pts/0 00:00:00 ps

Näide 2. Kõik protsessid.

$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 1948 740 ? Ss 15:49 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S< 15:49 0:00 [kthreadd]
...
kasutaja 1846 1.3 6.9 85732 22340 ? Sl 15:51 0:14 gnome-terminal
kasutaja 1848 0.0 0.1 2776 632 ? S 15:51 0:00 gnome-pty-helper
kasutaja 1849 0.0 0.4 5716 1512 pts/0 Ss 15:51 0:00 bash
kasutaja 1895 4.0 0.2 5512 940 pts/0 R+ 16:10 0:00 ps aux

USER - iga protsess on seotud süsteemi kasutajaga
PID - OS annab protsessile unikaalne number ehk protsessi
identifikaator
%CPU - kui palju protsessori aega kasutab antud protsess
%MEM - kui palju operatiivmälu kasutab antud protsess
VSZ - virtuaalmälu kilobaitides
RSS - residentne mitte swappitav osa
TTY - kasutatav terminal
STAT - staatus, vaata man ps
START - protsess algas
TIME - protsess kestab
COMMAND - fail ja argumendid mida käivitati protsessi loomiseks

1.3.3 Backslash (\)

Backslash on väga populaarne sümbol Unixi maailmas mis erinevate
programmide puhul täidab erinevat rolli.

Koorik (sh) kasutab seda rea jätkamise sümbolina

Näide 1.

$ ls -la \
> /boot
total 5864
drwxr-xr-x 4 root root 4096 2008-10-12 23:48 .
drwxr-xr-x 21 root root 4096 2008-10-22 18:50 ..
-rw-r--r-- 1 root root 88852 2008-09-20 10:54 config-2.6.26.5-45.fc9.i686
drwxr-xr-x 3 root root 4096 2008-05-08 04:41 efi
drwxr-xr-x 2 root root 4096 2008-10-12 23:48 grub
-rw------- 1 root root 2713893 2008-10-12 11:30 initrd-2.6.26.5-45.fc9.i686.img
-rw-r--r-- 1 root root 112076 2008-04-04 00:16 memtest86+-2.01
-rw-r--r-- 1 root root 916225 2008-09-20 10:54 System.map-2.6.26.5-45.fc9.i686
-rwxr-xr-x 1 root root 2125408 2008-09-20 10:54 vmlinuz-2.6.26.5-45.fc9.i686

1.3.4 echo

echo on lihtne käsk mis trükib ekraanile enda argumendid

Näide 1. echo

$ echo tere unix
tere unix
$

-n ütleb et rea lõpus rea vahetust pole vaja

Näide 2. echo -n

$ echo tere unix
tere unix$

1.3.5 Ussiauk (Wormhole)

Kui kõik vajalikud juht- ja nähtavad sümbolid ei mahu piiratud
tähestikku, kasutatakse ussiauke. Selleks üks sümbol reserveeritakse
selleks et anda teada et edasi kasutatakse sümbol laiendatud
(extended) tähestikust. Tihti selline reserveeritud sümbol on
\ backslash. Reserveeritud sümbol vanas tähenduses kantakse
laiendatud tähestiku tabelisse. Siis \\ on trükitav backslash.

Lisame järgmised sümbolid:

\t tabulaator (tab)
\n rea vahetus (new line)
\000, \001, .. \007, \010, .. \377 ASCII sümbol 8-nd koodis

Näide 3. Backslash, echo ja ussiauk

$ echo -e "\074tere unix\076"
<tere unix>
$ echo -e \074tere unix\076
074tere unix076
$ echo -e \\074tere unix\\
<tere unix>
$

-e ütleb et võib kasutada spetsiaalsümboleid mis algavad \
(backslash sümboliga).


1.3.6 STDIN STDOUT, STDERR. cat

Programmid on mõeldud informatsiooni töötlemiseks. Selleks programm

- loeb informatsiooni ühest või mitmest failist ning
- salvestab töödeldut informatsiooni ühte või mitmesse failidesse

Koorik hoiab alati avatuna kolm faili

0 või STDIN - standard input (sisend)
1 või STDOUT - standard output (väljund)
2 või STDERR - standard error (vead)

STDOUT ümbersuunamine faili toimub >, >>, 1> 1>>, |, 1|
operaatorite abil.
STDERR ümbersuunamine faili toimub 2>, 2>>, 2|
operaatorite abil.
STDIN ümbersuunamine (lugeda failist) toimub <, 0<
operaatorite abil, kus:

< read from file
> write to file
>> append to file
| pipe to process

Näide 1. Loeme X --help kasutades "less" filtri (lõikab leheküljeteks
ning võimaldab otsida (/) nong lehitseda (space, enter, Up,
Down, PageUp, PageDown). Välja laseb q (quit).

X --help 2>&1 | less

Süntaksis 2>&1 suunab ümber STDERR STDOUT-i.

Näide 2.

$ echo Üks > raport
$ echo -n Kaks 1>> raport
$ echo -e \\nKolm >> raport
$ cat raport
Üks
Kaks
Kolm

Programm cat näitab failid mille nimed on üleslooetud argumendi reas
STDOUT-i.

Näide 3.

$ cat -n raport

1 Üks
2 Kaks
3 Kolm

Kui STDOUT on vaja failinime argumendi kohale panna kasutatakse "-"

Me võime kohe ehitada väga lihtsa teksti redaktori selleks et
kirjutada sõbrale enda uuest elust Unix protsessina.

Näide 4.

$ cat - > kiri0
Tere sõber !

Elu on siin huvitav, kuid ma veel ei oska praktiliselt midagi.
Ma isegi kahtlen, kas see mida man ütleb on õige, et kirja
salvestatakse siis, kui vajutan ctrl-d.

parimat! sinu cat bashi poeg.
$

2. Uus elu virtuaalses maailmas.

2.1 Kodukausta struktureerimine (mkdir, rm -rf).

Näide 1. Loome kaustad kodukataloogis

$ cd ~
$ mkdir school
$ mkdir job
$ mkdir relax
$ cd relax
$ mkdir audio
$ mkdir video
$ mkdir photo
$ cd ../school
$ mkdir lesson1
$ mkdir lesson1/a
$ mkdir lesson1/b

Näide 2. Kustutame lesson1 alampuu school kaustas

$ rm -rf /home/kasutaja/school/lesson1

-r recursive
-f force

2.2 Tagavarakoopia mälupulgale

Selleks et mälupulk monteerida failisüsteemiga tuleb luua
monteerimise kaust /mnt all

$ su -
# mkdir /mnt/usb
# mount /dev/sdb1 /mnt/usb
# exit

Uus käsk mount monteerib seadme /dev/sdb1 kataloogi /mnt/usb

Dazibao 3. KAHE ARGUMENDIGA KÄSUD:
ESIMENE ARGUMENT ON SEE MIS EKSISTEERIB.
TEINE ARGUMENT ON SEE MIDA LUUAKSE.

Nüüd arhiveerime kõik /home/kasutaja failid mälupulgale

cd ~/..
tar cv kasutaja | bzip2 > /mnt/usb/kasutaja-$(date +%Y%m%d).tar.bz2

Käsk tar (tape archive) saadab tulemuse STDOUT-i.

c - create
v - verbose

| toru abil ühendame tar väljundi pakkiva filtri bzip2 sisendiga.
Käsk bzip2 saadab tulemuse STDOUT-i.

> ümbersuunamine faili nimega d-20081025.tar.bz2 (2008 oktoober 25).
ajatempel lisatakse automaatselt nimele $(käsk) süntaksi abil.

Käsk date +F tagastab ajatempli formaadis F :

%Y - 4-kohaline aasta
%m - 2-kohaline kuu
%d - 2-kohaline kuupäev

Töö lõpus monteerime lahti USB seadme ning võtame pulga välja.

$ su -
# umount /dev/sdb1
# exit

2.3 sudo

# su -
# echo 'kasutaja ALL=(ALL) ALL' >> /etc/sudoers

2.4 mv (move), cp (copy) ja patch.

mv ja cp käsude puhul kehtib kahe argumendi reegel (Dazibao 3).

Näide 1. Kompileerime vanilla kerneli

cd /usr/src
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.tar.bz2
wget -c http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.27.4.bz2
tar xf linux-2.6.27.tar.bz2
mv linux-2.6.27 linux-2.6.27.4
cd linux-2.6.27.4
bzip2 -dc ../patch-2.6.27.4.bz2 | patch -p1
cp /boot/config-2.6.26.6-79.fc9.i686 .config
make oldconfig
make
make modules_install
make install

2.5 install

Näide 1. VirtualBox

# wget -c http://download.virtualbox.org/virtualbox/2.0.4/VirtualBox-2.0.4_38406_fedora9-1.i386.rpm
# yum install qt qt-x11 SDL
# rpm -Uvh VirtualBox-2.0.4_38406_fedora9-1.i386.rpm
# rm -f VirtualBox-2.0.4_38406_fedora9-1.i386.rpm

- Laadime alla pakett (wget).

- yum installib vajalikud programmid kasutades hajutud paketide
andmebaasi (repositooriumi). Tähtsamad käsud on:

yum search package_name
yum install package0 package1 ... packageN
yum remove package0 package1 ... packageN
yum clean all

- rpm installib allalaetud rpm pakettid. Tähtsamad käsud on:

rpm -Uvh packages(s).rpm install/upgrade package file(s)
rpm -e package remove package
rpm -qa '*spell*' show all packages whose names contain the
word spell
rpm -q package show version of package installed
rpm -q -i package show all package metadata
rpm -q -f /path/file what package does file belong
rpm -q -l package list where files were installed
rpm -q -l -p package.rpm list where files would be installed
rpm -q --requires package list files/packages that package needs
rpm -q --whatrequires pack list packages that need package pack

- rm kustutab allalaetud paketti mis on nüüd installitud.


2.5 Serial Terminal.

$ ln /dev/ttyS0 /dev/modem
$ yum install minicom
$ minicom

Konfigureerime:

Communication protocol (9600,8,N,1)
Hardware flow control OFF


3.0 Tekstitöötlus. Regulaaravaldised ja Filtrid.

Never write it in 'C' if you can do it in 'awk';
Never do it in 'awk' if 'sed' can handle it;
Never use 'sed' when 'tr' can do the job;
Never invoke 'tr' when 'cat' is sufficient;
Avoid using 'cat' whenever possible.

--Taylor's Laws of Programming

regexp ^ $ . [A-Za-z] [0123] [^A] () |
grep (-i, -v, -r, -l) 'regexp'
find
sed ja ed
cat (-n), wc (-l, -c, -w), less, more, head (-n 3), tail (-n)
tr, sed, gawk '{ print $3,$1 }', sort, uniq (-u), paste