6.11 File tartalma típusának meghatározása: file
A parancs legfontosabb opciói: -f ánév hatására a vizsgálandó file
neveket az ánév állományból veszi, -L hatására soft link esetén magát
a file-t vizsgálja, -mmáll esetén az /etc/magic állomány helyett a máll
állományt használja.
Példa : file abc.c # Kiirja, hogy : c program text
6.12 File-ok rendezése: sort
A sort egy állomány sorait rendezi. Alapértelmezésben a sorokat a
standard inputról várja és az eredményt standard outputra küldi. A sort
szintaktikája a következô:
sort [-cmu][-ooutput] [-y[kmem]] [-dfiMnr] [-btx] [+-m[.n] [bdfinr ]] [file]
A legfontosabb opciók jelentése a következô :
-c ellenôrzi, hogy az állományok már rendezve vannak-e.
-m a már külön-külön rendezett állományokat összefésüli
-u az egyenlônek talált sorokból csak egyet ír ki
-output a standard output helyett az output-ba írja ki az eredményt
-d szótári sorrend : csak a nagy- és kisbetûk, ill. az elválasztó
karakterek számítanak
-f a kisbetûk nagybetûknek számítanak
-i az ASCII tartományon kívüli karakterek nem számítanak
-M hónapok szerinti hasonlítás ( három nagybetûs név )
-n aritmetikai értékek szerinti hasonlítás
-r fordított sorrendû rendezés
-b a rendezési kulcsból elmaradnak az elválasztó karakterek
+m[.n][bdfinr] a rendezési kulcs elsô pozícióját adja meg. A +m.n az
m-edik mezô n-edik karakterét adja meg. Több kulcsot is megad-
hatunk, ilyenkor a rendezés hierarchikus lesz. Az opciók
lehetnek globálisak, de kulcsonként is adhatunk meg opciókat.
tx az x lesz a mezôelválasztó karakter
+m[.n][bdfinr] a rendezési kulcs utolsó karakterének pozíciója
Példa : Hozzunk létre egy ftc2 nevû file-t : lipcsei
simon
albert
Rendezés az rftc2 nevû file-ba : sort -orftc2 < ftc2
További példák a fejezet végén !
6.13 Megegyezô sorok szûrése : uniq
A parancs arra a célra szolgál, hogy az egymásután következô azonos
sorokat kiszûrje az inputból és így minden sort csak egyszer jelenítsen
meg a kimeneten. Éppen ezért, ha az állományunkban több helyen - szét-
szórva - fordul elô ugyanaz a sor, és nem egymásután, akkor a uniq
használata elôtt célszerû sorba rendezni az állományt. Szintaktikája a
következô :
uniq [ - [udc] ] [-n] [+n] [ infile [outfile] ]
Az opciók jelentése a következô :
-u csak az egyedi sorokat jeleníti meg a kimeneten
-d csak a többszörösen elôforduló sorok egy példányát jeleníti meg
-c minden sor elé kiirja, hogy hányszor szerepel a szövegben
-n az elsô n mezôt figyelmen kívül hagyja az összehasonlításnál
+n az elsô n karaktert figyelmen kívül hagyja az összehasonlításnál
Példa : cat uniqtext # ezt az állományt fogjuk szûrni
aaa
bbb
aaa
aaa
ccc
xyy
zyy
uniq -c uniqtext # egymásutáni azonos sorok számlálása
1 aaa
1 bbb
2 aaa
1 ccc
1 xyy
1 zyy
6.14 Szövegminta keresése file-ban : grep
A keresett mintát az ún. reguláris kifejezések felhasználásával lehet
megadni.
A grep szintaktikája :
grep [ -cilnv ] < minta > [file]
Az opciók jelentése a következô :
-c csak a mintát tartalmazó sorok számát írja ki
-i a nagy és kisbetûket azonosként kezeli
-l csak azon állományok nevét írja ki, ahol a minta szerepel
-n a talált sorokat sorszámukkal együtt írja ki
-v azokat a sorokat írja ki, amelyek nem tartalmazzák a mintát
A grep parancsot gyakran használjuk pipeok - ban !
Példák: grep lipcsei ftc1 # Kiírja az ftc1 azon sorait, ahol a
# lipcsei minta szerepel
users | grep zsuzsi # Megnézi, hogy a zsuzsi nevû fel-
# használó bejelentkezett-e?
6.15 Ållományok mezôinek kivágása: cut
Az elôzôekben ismertetett grep parancs segítségével sorokat tudunk
kiválasztani egy szöveges állományból. A cut parancs arra használható,
hogy az állomány soraiból bizonyos mezôket (oszlopokat) tudjunk kivá-
lasztani. Ezt kétféleképpen tehetjük meg: vagy karakter-, vagy mezôpozí-
ció(ka)t adunk meg.
A karakterpozíciós megadás szintaktikája a következô :
cut -clista [állomány ... ]
A karakterpozíciós megadás szintaktikája a következô :
cut -flista [-dkarakter] [-s] [állomány ... ]
A fôbb opciók jelentése a következô :
-clista a lista mondja meg, hogy mely karakterpozíciókat kell
kivágni - azaz megjeleníteni - az állományból.
-flista a lista mondja meg, hogy mely mezôket kell kivágni
-dkarakter a karakter lesz a mezôelválasztó. Az alapértelmezés a
szóköz, vagy a tabulátor
-s a mezôelválasztó nélküli sorokat nem engedi outputra
A -c ill. a -f közül valamelyiknek szerepelnie kell! A lista lehet
vesszôvel elválasztott felsorolás, kötôjellel elválasztott tartomány-
megadás, vagy a kettô kombinációja.
Példa : cat szov # Megtekintjük a szov tartalmát
aaa bbb ccc
ddd eee fff
xxx yyy zzz
cut -c1,5,9-11 szov # Kivágjuk az 1., az 5. ill. a 9-tôl
abccc # 11.-ig terjedô karaktereket
defff
xyzzz
6.16 Két file összehasonlítása : cmp
Csak akkor ad outputot, ha különbséget talál. Ebben az esetben az eltérés
helyének byte és sorszámát is kijelzi. Szintaktikája :
cmp [-s] file1 file2
A visszatérési értékek jelentése :
0 ha a két file azonos
1 ha különböznek
2 ha a parancsargumentum hibás vagy nem érhetô el.
A -s opció hatására csak a visszatérési értéket írja ki.
Példa : Hozzuk létre az ftc1 nevû file -t : lipcsei
lisztes
albert
Összehasonlítás : cmp ftc1 ftc2
Üzenet : ftc1 ftc2 differ : char 9, line 2
6.17 Két ASCII file összehasonlítása : comm
Kezdôbetûik szerint alfabetikus sorrendbe rendezett ASCII file-ok eseté-
ben külön-külön oszlopokban kiírja, a csak az elsô, csak a második ill.
mindkét fileban szereplô sorokat. Szintaktikája :
comm [ - [123] ] file1 file2
Mindegyik szám a megfelelô oszlop kiírását tiltja le. Kombinálhatók !
Példa : A 6.11-ben leírtak szerint rendezzük az ftc1 nevû file-t az
ftc1 nevû file-ba. Ezekután tekintsük meg mindkét rendezett
file-t :
cat rftc1
albert
lipcsei
lisztes
cat rftc2
albert
lipcsei
simon
Majd végezzük el az összehasonlítást a comm - mal :
comm rftc1 rftc2
Az eredmény :
albert
lisztes lipcsei
simon
6.18 Két ASCII file különbsége : diff
Szintaktikája : diff [ -efbh ] file1 file2
A visszatérési értékek jelentése megegyezik a 6.13-ban leírtakéval.
A fontosabb opciók jelentése :
-e az ed szövegszerkesztô által végrehajtható script-et generál
-b a sorkezdô és egyéb blank karaktereket nem veszi figyelembe az
összehasonlításnál
-h nagy méretû állományok gyors összehasonlítására szolgál, de
csak kis változásokat tud nyomonkövetni. Az -e nem érvényes
ilyenkor !
Példa: Hasonlítsuk össze az ftc1 és az ftc2 filok-at :
diff ftc1 ftc2
Üzenet : 2c2
< lisztes
---
> simon
Ez az üzenet azt jelenti, hogy az elsônek megadott file második
sora (lisztes) megváltozik a második file második sorában
(simon).
6.19 Karakterkonverzió: tr
A parancs szintaktikája :
tr [ -cds ] [string1] [string2]
Az inputbeli és a string1-ben - adott pozíción - megtalálható karaktert
kicseréli a srting2 azonos pozícióján lévô karakterrrel. Ha string2
rövidebb mint string1, akkor az utolsó karakter többszörözôdik. Az op-
ciók jelentése a következô :
-c azok a karakterek vesznek részt a cserében amelyek nem
szerepelnek a string1-ben
-d a string1-ben szereplô karaktereket törli az inputból
-s a string2-ben többször szereplô karaktereket egyszer írja ki
Példa: tr -s " " "\t" < szov
# A szov file-ban a szóközöket tabulátorokra cseréljük, ha
# több tabulátor fordul elô egymásután, akkor csak egyet
# iratunk ki az outputra.
6.20 File keresése: find
Az elsô arumentumban megadott katalógusból kiindulva rekurzív módon
végigjárva a katalógusokat, megkeresi az adott attribútumu file-t.
Szintaktikája : find útvonal kifejezés[ek]
A find-nak rengeteg opciója van, melyek az adott rendszer man-jában
megtalálhatók. A név szerinti keresés opciója : -namefile. Akkor igaz,
ha a file ráilik az aktuális állománynévre. A metakarakterek hasz-
nálhatók !
Példák: find * -inum 159695 # Az 159696-ös inode számú file
# keresése az aktuális könyvtárban
find * -links 3 # Azon file-ok keresése amelyek
# link száma 3
find *.c -name proba* # C kiterjesztésû fileok keresése,
# melyek nevében szerepel a proba
find * -perm 664 # Az rw-rw-r-- jogokkal rendelkezô
# file-ok keresése
6.21 Csövek (pipe-ok) elágaztatása : tee
Szintaktikája a következô : tee [-a] állománynév
A tee a bemenetét a standard inputról veszi, de kimenetét két helyre
küldi: egyrészt a standard outputra, másrészt a paramétereként meg-
nevezett állományba. A -a opció hatására a kimeneti állományt nem írja
felül, hanem hozzáfûzi az újabb kimeneti adatokat.
Példa: ls -l | tee temp # Az alkönyvtár listája megjelenik a kép-
# ernyôn ill. kiíródik a temp nevû file-ba
6.22 Parancs végrehajtás késleltetése : sleep
Szintaktikája : sleep szám[smhd]
Alapértelmezés szerint annyi másodpercig szünetelteti a parancs végre-
hajtást, amennyit a szám-ban megadunk. Az s másodpercben, az m percben,
a h órában, ill. a d napban jelenti a késleltetést.
Példa: ls -l ; sleep 30 ; users # Katalóguslista, majd 30 mp után a
# bejelentkezett személyek listája
A Dune-News szerkesztôsége köszönetet mond Bodlaki Tamás tanárúrnak a
segítségéért, és a jegyzet rendelkezésünkre bocsájtásáért.