A korábban említett cat parancs a megadott állomány tartalmát a szabványos kimenetre (a standard outputra) küldi; ez a mi esetünkben a képernyő (illetve alighanem a parancsértelmezőt futtató terminálablak).
A kimenet azonban átirányítható:
tux@madas:~/public_html/txt/mp$ cat ksh_hnk_1913 > temp tux@madas:~/public_html/txt/mp$ ls -l ksh_hnk_1913 temp -rw-rw-r-- 1 tux tux 149995 okt 27 11:01 ksh_hnk_1913 -rw-rw-r-- 1 tux tux 149995 nov 1 16:56 temp tux@madas:~/public_html/txt/mp$
Ahogyan láthatjuk, ezzel az eljárással bizonyos helyzetekben akár a cp parancsot is helyettesíthetnénk.
Más parancsok kimenetét is hasonlóképpen irányíthatjuk át. Lássuk most a head, majd a tail esetét: az előző segítségével hagyjuk el a helységnévtár utolsó két sorát, majd az utóbbival az első két sort:
tux@madas:~/public_html/txt/mp$ head -n -2 ksh_hnk_1913 > temp tux@madas:~/public_html/txt/mp$ tail -n +3 temp > ksh_hnk_1913.txT tux@madas:~/public_html/txt/mp$ rm temp
(Ha valaki csodálkoznék a -2, illetve a +3 használatán, az idézze föl az előző lecke végén látott kérdéseket, illetve az azokra adható válaszok tanulságát…)
Ellenőrzésképpen nézzük meg, hány sorból áll az új állomány:
tux@madas:~/public_html/txt/mp$ wc ksh_hnk_1913.txT 12538 12548 149921 ksh_hnk_1913.txT
A wc parancs is megkaphatja paraméterként több állomány nevét:
tux@madas:~/public_html/txt/mp$ wc ksh_hnk_1913 ksh_hnk_1913.txT 12542 12552 149995 ksh_hnk_1913 12538 12548 149921 ksh_hnk_1913.txT 25080 25100 299916 összesen tux@madas:~/public_html/txt/mp$
A figyelmes szemlélőnek föltűnhetett, hogy a psql kimenete minden sort egy szóközzel kezdett. Megelőlegezve most egy haladóknak szánt ismeretet, a sed parancs segítségével töröljük (kicseréljük) a sorkezdő szóközöket:
tux@madas:~/public_html/txt/mp$ sed "s/^ //" ksh_hnk_1913.txT > ksh_hnk_1913.txt tux@madas:~/public_html/txt/mp$ wc ksh_hnk_1913.txT ksh_hnk_1913.txt 12538 12548 149921 ksh_hnk_1913.txT 12538 12548 137383 ksh_hnk_1913.txt 25076 25096 287304 összesen tux@madas:~/public_html/txt/mp$
Ha eddig nem rögzítettük volna, szögezzük le most: a unix/linux az állománynevekben (is) különbséget tesz a kisbetűk és a nagybetűk között.
Föltűnhetik, hogy a szavak száma tízzel több, mint a soroké – ezek szerint volt olyan település, amelynek a neve szóközt tartalmaz. Ezeket is kiválogathatjuk a sed parancs segítségével:
tux@madas:~/public_html/txt/mp$ sed -n "/ /p" ksh_hnk_1913.txt selmecz- és bélabánya nagyosztró és kisosztró nagypalugya és gálfalu okolicsnó és sztosháza alsórásztok és felsőrásztok tux@madas:~/public_html/txt/mp$
Erre a célra azonban elegendő az ugyancsak haladó szintűnek számító grep parancs:
tux@madas:~/public_html/txt/mp$ grep " " ksh_hnk_1913.txt selmecz- és bélabánya nagyosztró és kisosztró nagypalugya és gálfalu okolicsnó és sztosháza alsórásztok és felsőrásztok tux@madas:~/public_html/txt/mp$
Lássuk végül a sort parancsot:
tux@madas:~/public_html/txt/mp$ sort ksh_hnk_1913.txt … zsögöd zsujta zsúk zsukó zsunk zsupánfalva zsuppa zsuppány zsurk tux@madas:~/public_html/txt/mp$
Vegyük észre, hogy a parancs helyesen rendezi a zs-vel kezdődő települések nevét: ezek követik Zuberecz, Zubogy, Zubrohlava, Zúgó, Zuhatag, Zuhogó, Zurány és Zutor települések nevét (nem mellesleg, ugyancsak helyesen, a rövid u és a hosszú ú a rendezés során egyenrangú).
A fejezet elején implicit módon kiderült, hogy az átirányításnak ezzel a módjával töröltük az állomány (most éppen a temp nevű állomány) korábbi tartalmát (feltéve persze, hogy létezett és volt tartalma).
Ha törlés helyett hozzáfűzni szeretnénk a kimeneti állományhoz, akkor > helyett >> használható:
tux@madas:~/public_html/txt/mp$ head ksh_hnk_1913.txt > temp tux@madas:~/public_html/txt/mp$ wc temp 10 10 81 temp tux@madas:~/public_html/txt/mp$ head ksh_hnk_1913.txt >>temp tux@madas:~/public_html/txt/mp$ wc temp 20 20 162 temp tux@madas:~/public_html/txt/mp$
Miért kezdődik szóközzel a wc parancs kimenete a második esetben?