blog.johanka.net

Na úvod k příkazové řádce (head, less, tail, diff)

Dnes si představíme několik dalších základních příkazů a jak se dají kombinovat při manipulaci s jednoduchými textovými soubory na Linuxu.

Příkazy head a tail fungují oba podobně a jsou velmi intuitivní. Když potřebujete z nějakého souboru zobrazit jen první(ch několik) řádek, stačí zadat v Terminálu

head -n 1 soubor.txt

Analogicky, když zadáte

tail -n 3 soubor.txt

zobrazí se vám pouze poslední tři řádky z uvedeného souboru. K čemu se nám tyto příkazy mohou hodit?

Řekněme, že chcete vytvořit stránku obsahující seznam všech příspěvků na vašem blogu. Můžete toho dosáhnout tak, že postupně otevřete jednotlivé soubory, zkopírujete první řádky a vložíte je do souboru pojmenovaného obsah. Nebo můžete v Terminálu zadat

head -n 1 blog/01.txt >> blog/index.txt
head -n 1 blog/02.txt >> blog/index.txt

a tak dále. Později si ukážeme, jak se toto zadání dá ještě zhutnit.

Pokud se vám na konci jednotlivých stránek opakuje stejný kód nebo text, můžete si jej do nových souborů zkopírovat takto

tail -n 3 blog/04.txt >> blog/05.txt

Příkazy less a more se též dají použít k prohledávání a selektivnímu zobrazování částí textu. Jejich vlastnosti a možnosti užití jsou velmi podobné jako u příkazů, které jsme si už představili, takže se jimi na tomto místě už nebudu déle zabývat.

Podívejme se nyní na další užitečný a velmi jednoduchý příkaz diff. Pokud se vám (tak jako mně) na disku povaluje hned několik verzí téhož textu v různých stádiích úprav, nemusíte je mít všechny otevřené vedle sebe, abyste zjistili, zda a v čem se liší. Můžete k tomuto účelu použít příkaz diff. Prostě a jednoduše zadejte v Terminálu

diff soubor1 upravený_soubor1

(za předpokladu, že se oba soubory nacházejí v jedné složce) a systém vám vypíše pouze ty řádky, které se liší, včetně jejich pořadí.

Až dopíšu tento text, doplním jej formátovacími značkami (aby se na vás na vašem oblíbeném blogu :-) nešklebila ošklivá masa nestrukturovaného textu), soubor uložím, zkopíruju (cp původní_umístění/soubor nové_umístění/) do složky, kde se nacházejí ostatní článečky pro tento blog, a v Terminálu zadám

head -n 5 l*_cz_07.php > linux_cz_08.php && cat l*08_cz.txt >> l*_cz_08.php && tail -n 15 l*_cz_07.php >> l*_cz_08.php

Převedeno do češtiny: Nejdříve jsem nechala z předchozího příspěvku zkopírovat prvních pět řádků do nově vytvořeného souboru linux_cz_08.php, poté jsem do něj zkopírovala tento text a k nově vytvořenému souboru jsem přidala posledních 15 řádků kódu ze souboru předchozího.

Následně pak zkontroluju, jestli nechybí něco důležitého, opravím, co je třeba opravit, soubor zavřu, smažu všechny nepotřebné kopie a umístím všechny aktualizované soubory na server, abyste si je zde mohli číst.

V minulém příspěvku mi hned na dvou místech unikl chybějící znak > . Už se nebudu pokoušet stíhat hned dva článečky za týden (a ve dvou jazycích).

copy left Johanka Piskovská, 2020