Ahogyan a könyvtárműveletek kapcsán említettük, a unix-alapú rendszerekben meghatározó szerepe van az állományoknak. Ezen belül is kiemelt szerepet játszanak a szöveges állományok; sok parancsot kifejezetten az ezekkel végzett munkához terveztek meg.
Az egyszerűbbek közé tartozik a wc, amely megszámolja a szöveges állomány sorait, szavait és byte-jait:
tux@madas:~/public_html/txt/mp$ wc ksh_hnk_1913 12542 12552 149995 ksh_hnk_1913 tux@madas:~/public_html/txt/mp$
Pontosítva, illetve egyértelműsítve az imént mondottakat: a wc parancs a sorvégjeleket számolja, továbbá nem karaktereket, hanem valóban byte-okat számol. (Miért különbözhetik a sorok és a sorvégjelek száma? Mekkora lehet a különbség? Miért különbözhetik a byte-ok és a karakterek száma? Hányszoros lehet az eltérés?)
Előfordulhat, hogy a három adat közül csak az egyikre van szükségünk: a -l opcióval például a sorok számát fogjuk megkapni:
tux@madas:~/public_html/txt/mp$ wc -l ksh_hnk_1913 12542 ksh_hnk_1913 tux@madas:~/public_html/txt/mp$
Érdemes megjegyezni, hogy a -l különböző esetekben mást és mást jelenthet: az eddigiekben rövidítette már a long, illetve a line szót. Általánosságban is elmondható, hogy akár parancsok neve (illetve a rövidtés módja), akár az opciók megválasztása nem föltétlenül mutat koherens rendet.
Jó példa erre a creat nevű rendszerhívás – ez arról híresült el, hogy amikor a unix egyik alkotóját, a Turing-díjas Ken Thompsont megkérdezték, mit tenne másként, ha újratervezné a rendszert, azt a választ adta, hogy e-vel írná a creat szót.
A cat parancs –alapesetben– képernyőre írja egy állomány tartalmát. A segítségével megállapíthatjuk például, mi a szöveges állomány tartalma:
tux@madas:~/public_html/txt/mp$ cat ksh_hnk_1913 … zólyomternye bábaszék dobronya tótpelsőcz beszterczebánya breznóbánya zólyom (12538 rows) tux@madas:~/public_html/txt/mp$
Természetesen a 12542 (vagy 12538?) sor nem fér el a képernyőn. A head paranccsal viszont kiírathatjuk az állomány elejét (alapértelmezés szerint az első tíz sort):
tux@madas:~/public_html/txt/mp$ head ksh_hnk_1913 hn ----------------------------- buzita komarócz reste szeszta bodoló csécs makrancz pány tux@madas:~/public_html/txt/mp$
Ezzel egyúttal megkaptuk a magyarázatot is a négysornyi eltérésre: az állomány 12542 sorából az első kettő, illetve az utolsó kettő nem számít a 12538-ba.
Az állományban a Magyar Királyság utolsó, az 1910-es népszámlálás adatait is tartalmazó helységnévtárának településnevei szerepelnek, szám szerint 12538. A kimenet egy postgres-adatbázisból származik, s a psql parancs alaphelyzetben kiírja a mezőnevet (hn), egy határoló vonalat, majd a rekordok után azok számát, s egy üres sort.
A head parancsnak a -n opcióval adhatjuk meg, hány sort szeretnénk látni:
tux@madas:~/public_html/txt/mp$ head -n +4 ksh_hnk_1913 hn ----------------------------- buzita komarócz tux@madas:~/public_html/txt/mp$
Az előző parancs természetes párja a tail: ez az állomány végét írja ki (erre vonatkozó argumentum híján ugyancsak tízet):
tux@madas:~/public_html/txt/mp$ tail ksh_hnk_1913 zólyomszabadi zólyomternye bábaszék dobronya tótpelsőcz beszterczebánya breznóbánya zólyom (12538 rows) tux@madas:~/public_html/txt/mp$
Ebben az esetben is van -n kapcsoló:
tux@madas:~/public_html/txt/mp$ tail -n -4 ksh_hnk_1913 breznóbánya zólyom (12538 rows) tux@madas:~/public_html/txt/mp$
Vajon miért írtunk egyszer +4-et, másszor -4-et?
tux@madas:~/public_html/txt/mp$ head -n -2 ksh_hnk_1913 … vaségető zólyomszabadi zólyomternye bábaszék dobronya tótpelsőcz beszterczebánya breznóbánya zólyom tux@madas:~/public_html/txt/mp$
tux@madas:~/public_html/txt/mp$ tail -n +3 ksh_hnk_1913 … zólyomternye bábaszék dobronya tótpelsőcz beszterczebánya breznóbánya zólyom (12538 rows) tux@madas:~/public_html/txt/mp$
Mi lesz a következő parancsok eredménye?
tux@madas:~/public_html/txt/mp$ head -n -12538 ksh_hnk_1913 tux@madas:~/public_html/txt/mp$ head -n +4 ksh_hnk_1913 tux@madas:~/public_html/txt/mp$ tail -n -4 ksh_hnk_1913 tux@madas:~/public_html/txt/mp$ tail -n +12538 ksh_hnk_1913