(1) niz1 = niz2
(2) niz1 != niz2
(3) niz1 < niz2
(4) niz1 > niz2
(5) -n niz1
(6) -z niz1
(1) niz1 je enak niz2
(2) niz1 ni enak niz2
(3) __TO-DO__
(4) __TO-DO__
(5) niz1 ni prazen (vsebuje enega ali več znakov)
(6) niz1 je prazen
Primerjanje dveh nizov
#!/bin/bash
NIZ1='niz'
NIZ2='Niz'
if [ $NIZ1=$NIZ2 ];
then
echo "NIZ1('$NIZ1') je enak NIZ2('$NIZ2')"
fi
if [ $NIZ1=$NIZ1 ];
then
echo "NIZ1('$NIZ1') je enak NIZ1('$NIZ1')"
fi
Andreas Beck je v svojem sporočilu predlagal uporabo if [ $1 = $2 ].
To ni pretirano dobra ideja, ker boste v primeru, da je $NIZ1 ali $NIZ2 prazen, dobili sporočilo o napaki. Bolje je uporabiti x$1=x$2 ali "$1"="$2"
+
-
*
/
% (ostanek)
-lt (<)
-gt (>)
-le (<=)
-ge (>=)
-eq (==)
-ne (!=)
Če znate programirati v C-ju, preprosto izberite operator, ki ustreza izbranemu operatorju v oklepajih.
To poglavje je ponovno napisal Kees (glejte Zahvale).
Nekateri izmed navedenih ukazov so že sami po sebi skoraj pravi programski jeziki, zato bodo o njih povedane le osnovne stvari. Če boste želeli bolj poglobljen opis, si lahko ogledate njihove priročnike (man pages).
sed (stream editor - urejevalnik toka)
Sed je ne-interaktiven urejevalnik. Datoteke ne urejate s premikanjem kurzorja po zaslonu, temveč sed-u podate skript navodil za urejanje ter ime datoteke. Sed bi lahko opisali tudi kot filter. Poglejmo nekaj primerov:
$sed 's/za_zamenjavo/zamenjava/g' /tmp/nekaj
Sed zamenja niz 'za_zamenjavo' z nizom 'zamenjava', pri čemer bere iz datoteke /tmp/nekaj. Rezultat bo poslan na standardni izhod (navadno konzola), lahko pa seveda na konec ukaza dodate '>zajeto', kar bo preusmerilo izhod v datoteko 'zajeto'.
$sed 12, 18d /tmp/nekaj
Sed bo izpisal vse vrstice razen 12. in 18. Originalne datoteke ta ukaz ne spremeni.
awk (spreminjanje podatkovnih datotek, iskanje ter procesiranje besedila)
Obstaja mnogo izvedb programskega jezika AWK (najbolj znana interpreterja sta GNU-jev gawk in 'new awk' mawk). Princip je preprost: AWK išče določen vzorec ter izvrši niz ukazov, ko ga najde.
Ustvaril sem testno datoteko 'nekaj', ki vsebuje naslednje vrstice:
"test123
test
tteesstt"
$awk '/test/ {print}' /tmp/nekaj
test123
test
Vzorec, ki ga AWK išče je 'test', ukaz, ki ga izvrši, ko v datoteki /tmp/nekaj najde vrstico s tem vzorcem, pa 'print'.
$awk '/test/ {i=i+1} END {print i}' /tmp/nekaj
3
V primeru, da iščete mnogo vzorcev, je pametno zamenjati tekst med narekovaji z '-f datoteka.awk' in napisati vzorce ter ukaze v datoteko 'datoteka.awk'.
grep (izpiše vrstice, ki vsebujejo iskani vzorec)
Ukaz grep smo že nekajkrat srečali v prejšnjih poglavjih, ko je bilo potrebno izpisati vrstice z iskanim vzorcem. Vendar grep zmore še več.
$grep "iščemo tole" /var/log/messages -c
12
Niz "iščemo tole" se je v datoteki /var/log/messages pojavil 12-krat.
[priznam, ta primer ni popolnoma resničen - malce sem priredil /var/log/messages :-)]
wc (prešteje vrstice, besede ter znake)
Ta primer ne izpiše točno tistega, kar bi pričakovali. Uporabljena testna datoteka vsebuje naslednje besedilo: "uvod v bash testna datoteka"
$wc --words --lines --bytes /tmp/nekaj
1 5 28 /tmp/nekaj
Wc se za vrstni red podanih parametrov ne zmeni, temveč izpiše statistike vedno enako: <vrstice> <besede> <znaki> <datoteka>.
sort (razvrsti vrstice besedila)
To pot testna datoteka vsebuje naslednje besedilo:
"b
c
a"
$sort /tmp/nekaj
Izpis izgleda takole:
a
b
c
Ukazi ne bi smeli biti tako enostavni :-)
bc (programski jezik za računanje)
Bc lahko prebere račune iz datoteke, podane v ukazni vrstici, ali pa preko uporabniškega vmesnika. Ta primer prikazuje nekaj ukazov.
Navadno bc zaženem z parametrom -q, ki prepreči izpis pozdravnega sporočila.
$bc -q
1 == 5
0
0.05 == 0.05
1
5 != 5
0
2 ^ 8
256
sqrt(9)
3
while (i != 9) {
i = i + 1;
print i
}
123456789
quit
tput (inicializacija terminala ali poizvedba podatkovne baze terminfo)
Manjša demonstracija zmožnosti programa tput:
$tput cup 10 4
Pozivnik se pojavi na (y10,x4)
$tput reset
Počisti zaslon, pozivnik pa se pojavi na (y1,x1). (y0,x0) je zgornji levi kot zaslona.
$tput cols
80
Izpiše število znakov terminala v smeri osi x.
Močno vam priporočam, da se dobro seznanite z vsaj temi programi. Seveda pa obstaja še množica drugih majhnih programov, s katerimi v ukazni vrstici lahko izvajate prave čarovnije.
[nekaj primerov v tem poglavju je vzetih iz priročnikov in pogosto zastavljanih vprašanj]