Rekurzívna skratka GNU (GNU’s Not Unix = GNU nie je Unix) označuje projekt, ktorý v roku 1983 založil americký programátor Richard Matthew Stallman (RMS). Za cieľ si dal vytvorenie slobodného operačného systému s otvoreným zdrojovým kódom, ktorý by vychádzal z filozofie uzavretého operačného systému Unix.
Približne o 10 rokov bol skompletizovaný Unix-Like slobodný operačný systém pod názvom GNU/Linux, ktorý sa postupne stal zlatým štandardom vo svete serverov. V rôznych obmenách je nasadzovaný aj v nositeľnej elektronike, mobiloch, tabletoch, televízoroch, notebookoch, stolových počítačoch, autách, či dokonca vo vesmíre.
Základné programy časti GNU tvoria desiatky malých aplikácií, ktoré robia jeden jednoduchý úkon (napr. vypíšu zoznam súborov alebo obsah súboru). Zároveň sú schopné medzi sebou spolupracovať, keďže výstup jedného programu môže byť použitý ako vstup iného (napr. nižšie vysvetlené head -n 10 nazov_suboru.txt | nl -b a
).
Postupne si predstavíme základné programy projektu GNU (balík Coreutils). Budeme pracovať so súbormi a s bežnými nastaveniami operačného systému GNU/Linux, ktoré sú uložené v súboroch. Pretože v operačnom systéme GNU/Linux je všetko o súboroch.
cat
Jeden z najznámejších nástrojov balíka GNU Coreutils je cat
. Ide o jednoduchý výpis obsahu obyčajného textového súboru:
cat nazov_suboru.txt
Jednoduchý výpis je možné rozšíriť vďaka nastaveniam. Napríklad všetky neprázdne riadky sa očíslujú takto:
cat -b nazov_suboru.txt
Ak do číslovania potrebujeme zahrnúť aj prázdne riadky, použijeme iný prepínač:
cat -n nazov_suboru.txt
Užitočný je tiež prepínač -s
, vďaka ktorému viacero po sebe nasledujúcich prázdnych riadkov zredukujeme na jeden prázdny riadok:
cat -s nazov_suboru.txt
Niekedy môže zase byť prospešné zobraziť konce riadkov ako znak dolára ($):
cat -e nazov_suboru.txt
Všetky vyššie spomínané prepínače môžeme kombinovať, aby sme pri výpise súborov dosiahli požadovaný efekt.
tac
Názov nástroja tac
je opačne napísaný názov vyššie spomínaného nástroja cat
. Nástroj tac teda vypíše obsah súboru, ale opačne. To znamená, že posledný riadok bude prvý, čo sa hodí napríklad pri súboroch záznamov (log):
tac nazov_suboru.txt
nl
V prípade, že potrebujeme číslovanie riadkov nastaviť podrobnejšie, použijeme nástroj nl
. Vďaka nemu je možné pridať pred čísla nuly (prvý riadok) alebo pridať medzi číslo a začiatok riadku ľubovoľné znaky (druhý riadok):
nl -n rz nazov_suboru.txt
nl -s ... nazov_suboru.txt
Tiež môžeme upraviť, do ktorého čísla sa začne číslovanie (prvý riadok), či o koľko sa zväčší ďalšie číslo (druhý riadok):
nl -v 2 nazov_suboru.txt
nl -i 2 nazov_suboru.txt
Podobne ako nástroj cat, aj nl umožňuje číslovať všetky riadky (prvý riadok) alebo iba neprázdne riadky (druhý riadok):
nl -b a nazov_suboru.txt
nl -b t nazov_suboru.txt
Ak je riadkov v súbore príliš veľa, stačí zvýšiť prednastavených 6 číslic na povedzme 10 (alebo ľubovoľný počet znakov):
nl -w 10 nazov_suboru.txt
od, base32 a base64
Obsah súboru nástroj od
zobrazí v osmičkovej (prvý riadok), desiatkovej (druhý riadok) alebo šestnáckovej (tretí riadok) sústave:
od -A o nazov_suboru.txt
od -A d nazov_suboru.txt
od -A x nazov_suboru.txt
Nástroje base32
a base64
proste kódujú obsah súboru v týchto formátoch:
base32 nazov_suboru.txt
base64 nazov_suboru.txt
head a tail
Priamočiary príkaz head
slúži na zobrazenie prvých riadkov. Takto napríklad zobrazíme prvých 10 riadkov:
head -n 10 nazov_suboru.txt
Nástroj head nedokáže číslovať riadky, no s pomocou nástroja nl číslovanie ľahko pridáme. Cez potrubie (pipe) pošleme výstup z head do vstupu nl. Takto teda programy z balíka Coreutils dokážu spolupracovať:
head -n 10 nazov_suboru.txt | nl -b a
Naopak, posledných 10 riadkov zobrazíme nástrojom tail
takto:
tail -n 10 nazov_suboru.txt
Program tail sa často používa na nepretržité sledovanie súborov so záznamom (log). Pretože do týchto súborov pribúda obsah na koniec súboru pravidelne a rýchlo, je dobré sledovať aktuálny stav automaticky:
tail -n 10 -f nazov_suboru.txt
split
Nástroj split
dokáže rozdeliť súbor na viacero menších súborov. Povedzme, že súbor obsahuje tisíce dlhých riadkov a jeho veľkosť znemožňuje poslať ho e-mailom ako prílohu. Súbor teda rozdelíme na viac malých, z ktorých každý bude obsahovať najviac 1000 riadkov:
split -l 1000 nazov_suboru.txt
Bolo vytvorených množstvo súborov, pričom každý začína malým písmenom x. Ďalej v názve nasledujú ostatné písmená podľa abecedy, aby bolo možné súbory usporiadať tak, ako ide obsah veľkého súboru.
Užitočné môže byť aj pridať koncovku súborov za názov každého súboru:
split -l 1000 --additional-suffix=.txt nazov_suboru.txt
Takto môžeme menšie súbory priložiť do prílohy e-mailu, pretože už neprekračujú limit maximálnej veľkosti jedného súboru.
Zhrnutie
V tejto časti seriálu o GNU Coreutils sme predstavili nástroje, vďaka ktorým môžeme zobraziť obsah textového súboru. Ukázali sme si nasadenie jednoduchých nástrojov, a tiež sme demonštrovali možnú spoluprácu medzi nimi.