(1) s1 = s2
(2) s1 != s2
(3) s1 < s2
(4) s1 > s2
(5) -n s1
(6) -z s1
(1) s1 megegyezik s2-vel
(2) s1 nem egyezik meg s2-vel
(3) __TO-DO__
(4) __TO-DO__
(5) s1 nem nulla (egy vagy több karakterből áll)
(6) s1 nulla
Két sztring összehasonlítása.
#!/bin/bash
S1='string'
S2='String'
if [ $S1=$S2 ];
then
echo "S1('$S1') nem egyenlő S2('$S2')-vel"
fi
if [ $S1=$S1 ];
then
echo "S1('$S1') egyenlő S1('$S1')-vel"
fi
Most idézek egy részt Andreas Beck leveléből, az if [ $1 = $2 ] alakú utasításokkal kapcsolatban.
Nem túl jó ötlet a fenti példában is látható módszert használni, mert ha a $S1 vagy a $S2 üres, értelmezési hibát kapunk. Helyette használjuk inkább az x$1=x$2 vagy a "$1"="$2" formát.
+
-
*
/
% (maradék)
-lt (<)
-gt (>)
-le (<=)
-ge (>=)
-eq (==)
-ne (!=)
A C programozók egyszerűen össze tudják vetni ezen operátorokat a zárójelek közt megadottakkal.
Ezt a részt Kees újraírta (nézd meg a köszönetnyilvánítást...).
Néhány ezek közül a programok közül egy komplett programozási nyelvet takar. Ezen parancsok esetén csak az alapokat ismertetjük. Ha részletes leírásra is szükséged van nézd meg a parancsok kézikönyv oldalait (man pages).
sed (folyam szerkesztő)
A sed egy nem interaktív szerkesztőprogram. Ez azt jelenti, hogy a fájlok módosítása nem úgy megy, hogy mozgatod a kurzort a képernyőn. Itt szerkesztő utasításokból álló szkripteket használunk és egy fájlnevet, amit szerkeszteni akarunk. A sed tulajdonképpen egy szűrőnek is felfogható. Nézzük az alábbi példákat:
$sed 's/mit_cseréljek/mire_cseréljem/g' /tmp/dummy
A sed kicseréli a "mit_cseréljek" szöveget a "mire_cseréljem" szöveggel, és a bemenetét a /tmp/dummy fájlból veszi. A végeredmény az stdout-ra lesz küldve (ami alapesetben a konzol), de ha a sor végéhez írod, hogy "> fájlnév", akkor a sed kimenetét a "fájlnév" nevű fájlba küldi.
$sed 12, 18d /tmp/dummy
A sed, a 12. és 18. sorok közti rész kivételével kiírja a fájl tartalmát. Az eredeti fájl nem változik.
awk (fájlok módosítása, szöveg kinyerése és szerkesztése)
Az AWK-nak számos implementációja létezik (a legismertebbek a GNU-s gawk és az ún. "új awk", a mawk). Az alapelv egyszerű: az AWK mintát keres és minden illeszkedő mintára végrehajt valamilyen műveletet.
Megint létrehoztam egy dummy nevű fájlt, ami a következő sorokból áll:
"test123
test
tteesstt"
$awk '/test/ {print}' /tmp/dummy
test123
test
A minta, amit az AWK keres, a "test". Ha a /tmp/dummy fájlban talált egy sort, amiben szerepelt a "test" szó, akkor végrehajtotta rá a "print" műveletet.
$awk '/test/ {i=i+1} END {print i}' /tmp/dummy
3
Ha sokféle mintára keresel, cseréld ki az idézőjelek közti szöveget "-f file.awk"-ra és a mintákat, végrehajtandó tevékenységeket írd a "file.awk" nevű fájlba.
grep (a keresési mintára illeszkedő sorok kiírása)
Az előző fejezetekben már jó néhány grep parancsot láttunk, amelyek az illeszkedő sorokat írták ki. De a grep többre is képes.
$grep "ezt keressük" /var/log/messages -c
12
Az "ezt keressük" szöveg 12-szer szerepelt a /var/log/messages nevű fájlban.
[Jó, ez csak egy kitalált példa, a /var/log/messages meg lett buherálva. :-)]
wc (sorok, szavak, bájtok megszámolása)
A következő példában mást kapunk, mint amit várunk. A dummy nevű fájl, amit most használunk, a következő szöveget tartalmazza: "bash bevezetés HOWTO teszt fájl"
$wc --words --lines --bytes /tmp/dummy
2 5 34 /tmp/dummy
A wc nem foglalkozik a paraméterek sorrendjével. Mindig egy előre megadott sorrendben írja ki őket, amint azt te is láthatod: (sorok)(szavak)(bájtok)(fájlnév).
sort (szöveges fájl sorainak rendezése)
Most a dummy fájl a következőket tartalmazza:
"b
c
a"
$sort /tmp/dummy
A kimenet kábé így néz ki:
a
b
c
A parancsok nem lehetnek ilyen egyszerűek :-)
bc (egy számológépes programozási nyelv)
A bc a parancssorból kapja meg a számítási feladatokat (fájlból, nem pedig átirányítás vagy cső útján), esetleg egy felhasználói felületről. A következőkben példákon keresztül bemutatunk néhány parancsot.
A bc-t a -q paraméterrel indítom, hogy ne írja ki az üdvözlő szöveget.
$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 (terminál inicializálására vagy a terminfo adatbázis lekérdezésére)
Egy kis példa a tput képességeinek demonstrálására:
$tput cup 10 4
A kurzor a (y10,x4)-es pozícióban jelenik meg.
$tput reset
Törli a képernyőt, és a kurzor az (y1,x1) pozícióba kerül. Az (y0,x0) a bal felső sarok koordinátája.
$tput cols
80
Az x tengely irányában maximálisan elhelyezhető karakterek száma.
Nagyon ajánlott, hogy legalább ezen programok használatával tisztában legyél. Millió olyan kis program van, amikkel csodákra lehetsz képes a parancssorban.
[Néhány példa kézikönyv oldalból vagy GYIK-ből származik.]