blog.johanka.net

Úvod k příkazové řádce IV

Tak jak se vám daří plnit novoroční předsevzetí? :-)

Ještě než spolu pronikneme do kouzel a tajů automatizace opakovaných úkonů v linuxovém prostředí, ukažme si nejdříve několik dalších základních příkazů pro manipulaci s textovými soubory, které můžete využít ve vlastních Bash skriptech.

Kompletní výpis adresáře pomocí příkazu ls -la, který jsem tu už představovala dříve, můžete např. zkombinovat s příkazem awk a nechat si zobrazit údaje jen z jednoho sloupce:

ls -la | awk '{print $5}'

Přijde vhod v náročnější skriptech pro údržbu systému.

Můžete si třeba ve svém adresáři Dokumenty nechat vypsat názvy všech souborů a složek s malými písmeny místo velkých:

ls | tr 'A-Z' 'a-z'

Nebo v nich nahradit všechny mezery podtržítkem:

ls | tr ' ' '_'

Jak už jistě tušíte, dají se s pomocí příkazu tr hromadně přejmenovávat soubory. To však není jeho jediné využití, jak si ještě ukážeme. Narazíte na něj ve složitějších skriptech, jejichž prostřednictvím text doslova rozsekáte na kousíčky, různě je pozměníte, a pak je znovu složíte.

Chcete-li z textu vyjmout jeden řádek, vložit jej do jiného dokumentu, nebo jej použít jako vstupní informaci pro jiný příkaz, můžete se obrátit na sed:

sed -n -e 7p linux_article_x.txt

Z rozepsaného textu pro tento blog se mi v Terminálu zobrazí pouze sedmý řádek.

Prostřednictvím příkazu sed můžete v textových dokumentech nahradit všechny výskyty určité kombinace znaků znaky jinými:

sed 's/http/https/g' index.html > index2.html && mv index2.html index.html

V uvedeném souboru jsem všechny výskyty http nahradila https. Příkaz sed se neptá, zda si každý jednotlivý výskyt opravdu přejete nahradit, opatrnost se tedy rozhodně vyplácí.

Pokud náhodou budu chtít ze souboru HTML odstranit všechny formátovací značky a nechat jen prostý text, můžu použít dehtmldiff:

dehtmldiff index.html > index.txt

Abych nezapomněla, .bash_history, tedy soubor, v němž se urchivují všechny vámi použité příkazy, se dá snadno vymazat. Stačí zadat v Terminálu

history -c

a hned poté

history -w

Při příštím otevření pak bude Terminál jako nepopsaná deska.

Jak už jsem naznačila, opakovanými úkony, které si na svém Linuxu můžete zautomatizovat, nemusí být jen prosté a jednoduché připomínání každodenních povinností (pro tento účel ostatně existuje spousta prográmků určených pro laického uživatele). Zautomatizovat se toho dá opravdu hodně, počínaje synchronizací souborů a složek mezi dvěma počítači a pravidelným zálohováním vaší diplomky (nebo jiného důležitého tvůrčího projektu) zdaleka nekonče.

Abyste získali datované archivy souborů vaší diplomky, můžete do některého ze svých skriptů přidat následující řádek:

tar -cvf diplomka_$(date +%y%m%d).tar /umístění/vaší/diplomky/

Pro pravidelnou synchronizaci souborů mezi počítačem a USB flashdiskem zase přijde vhod rsync:

rsync -av /vaše/složka/souborů /umístění/USB

Na druhém počítači pouze prohodíte zdrojový a cílový adresář.

Příště si povíme, co se skripty provést, aby je systém spouštěl za vás. Pokusím se stihnout pokračování ještě před koncem tohoto měsíce.

copy left Johanka Piskovská, 2020