Command Magicks: Jak zacházet se soubory a řetězci pomocí konzoly

Díky programování vás Kosmos ohromí. Zdroj: Pixabay.

Jako vývojáři každý den děláme spoustu opakujících se věcí, které nám odebírají drahocenný čas. Najít způsoby, jak tyto procesy automatizovat a optimalizovat, je obvykle velmi lukrativní.

Mnohokrát se ocitneme v prohledávání výstupu programu a hledáme příslušné bity a ručně je přesuneme do jiného souboru, změníme všechna velká písmena z věty na malá písmena nebo odstraníme všechny nečíselné znaky ze souboru. Druh nudných, opakujících se a náchylných úkolů, které se mohou hromadit, pokud je provedeme ručně, a proměnit se v velkou bolest hlavy.

Je běžnou moudrostí, že bychom tyto věci měli dělat programově, nikoli ručně. Mnohokrát problém spadá do tohoto sladkého místa, kde se kódování celého skriptu pro něj, dokonce i v Pythonu, jeví jako přehnané. Ruční práce bude trvat příliš dlouho nebo bude generovat příliš mnoho chyb.

Naštěstí mnoho z těchto úkolů již lidé kódovali chytřeji, než jsme my. K nim lze přistupovat pouze několika stisky tlačítek. Všechny jsou k dispozici jako příkazy shellu a některé z nich vám dnes ukážu. Pokud jste na terminálu úplně nový a nemáte tušení, jak procházet souborový systém nebo provádět podobné úkoly, doporučujeme vám přečíst si můj předchozí úvod k terminálu.

Takže bez dalšího povzbuzení, dovolte mi, abych vám představil nejužitečnější kouzla, která by měl průvodce kódováním vědět.

echo: Vytvoření řetězce v konzole

Než se můžeme ponořit do umění věštění a transformace, musí v kouzelnickém kouzlu dominovat skutečný průvodce programováním.
Příkaz echo následovaný řetězcem jednoduše vytvoří výstup z konzole, co bylo zadáno jako vstup. Například spuštění následujícího řádku:

echo „ahoj svět!“

bude produkovat následující výstup:

Ahoj světe!

Tohle se teď může zdát triviální, ale slibuji, že to bude v budoucnu užitečné.

kočka: Zobrazuje skutečnou podobu vstupu

Vyvoláním příkazu cat na souboru se jeho obsah přenese do terminálu.
Máme například adresář obsahující soubory „file1.txt“ a „file2.txt“. Oba soubory obsahují text „toto je soubor“. Povolání:

cat file1.txt

vypíše obsah souboru:

toto je soubor

Všimněte si, že argumentem příkazu cat může být libovolný název stylu shellu. Můžeme použít zástupný znak *, abychom shodovali jakýkoli řetězec. Takto bychom mohli vydávat obsah různých souborů jeden po druhém, například:

kočka * .txt

V tomto případě * odpovídá souboru1 i souboru2 a oba končí v .txt, takže jsou oba vytištěny. Výstupem tohoto příkazu bude

toto je soubor
toto je soubor

Pamatujte si tento příkaz - žádný kotec není bez kotě opravdu kompletní.

grep: nalezení jehly v kupce sena

Přepínáním na věštění je grep kouzlo pro nalezení podřetězce v řetězci.
Povolání

grep  název souboru

vydá každý řádek zadaného souboru, kde se daný řetězec objeví.

Pokud si přejeme, aby se objevil nejen ve své přesné podobě, ale také s odlišným pouzdrem, musíme předat argument -i, abychom ignorovali pouzdro.

Pokud to nazveme na různých souborech jediným příkazem, dostaneme seznam všech souborů s řádky odpovídajícími vzoru. Například v předchozím adresáři, volání

grep „this“ * .txt

bude výnos

file1.txt: Toto je soubor
tile2.txt: Toto je soubor

sed: transformace řetězce na jiný

Příkaz sed je transmutační kouzlo. Převezme obsah souboru a změní jej na jiný. Existuje mnoho způsobů, jak jej použít. Některé z nich se přiznávám, že vím jen málo. (Pokud to čtete a přemýšlíte o některých skvělých věcech, které dělá, o kterých se nezmiňuji, řekněte mi prosím v komentářích, protože se rád učím nové triky). Jednou z nejčastějších je nahrazení částí řetězce, které odpovídají vzoru, různými řetězci.

To se provádí voláním

sed “s / regexp / Replacement / volitelné_flagy” název_souboru

Co to udělá, je:

  • Vyhledejte každý řádek, který odpovídá regexpu v souboru file_name
  • Nahraďte první instanci této řádky nahrazením
  • Výstup výsledného řetězce do konzoly (bez změny souboru!).

Pokud na konec dodáme příznak g (jako je tento / starý / nový / g), bude se shodovat všechny instance na každém řádku, nikoli pouze ten první. Použití argumentu -i (na místě) skutečně zapíše do vstupního souboru.

Jako příklad lze uvést volání

sed “s / is / was / g” file1.txt

bude výstup

to byl soubor

Pokud chceme pouze shodovat celá slova, musíme vložit znak \ b obklopující regexp, jako je tento

sed “s / \ bis \ b / was / g” file1.txt

konečně dostat

toto byl soubor

Kombinace našich kouzel: Operátoři

Nyní ovládáte čtyři nové školy magie, z nichž každá má své charakteristické kouzlo. Chcete-li se však stát skutečným čarodějem, musíte se naučit spojovat nitky magie s úžasnými vzory. K tomu použijete tři výkonné nástroje.

| Operátor (potrubí)

Operátor potrubí vezme výstup předchozího příkazu a zapíše jej do vstupu následujícího příkazu, čímž vytvoří potrubí.
Například volání

kočka * .txt | grep „je“

nejprve načte obsah všech textových souborů v aktuálním pracovním adresáři. Pak hledejte každý řádek, který obsahuje řetězec „je“, než je konečně vytisknete.

> (write) Operátor

Operátor zápisu zapíše svůj vstup do svého výstupu - obvykle do souboru.

Například by byl rychlý způsob vytvoření textového souboru s textem „Toto je soubor“ jako jeho obsah

echo „toto je soubor“> some_file.txt

Vidíš, jak se to celé kouzelné kouzlo skutečně sčítá? Řekl jsem ti, že by to bylo užitečné.

Všimněte si, že pokud soubor již existoval, přepíše jeho obsah, aniž by to bylo třeba. V případě, že to není to, co jsme chtěli, musíme použít náš poslední nástroj:

>> (připojit) Provozovatel

Operátor >> zapíše svůj vstup do svého výstupu, kromě toho, že nepřepíše vše, co v něm již je.

To je vše, prošli jsme tímto tutoriálem a nyní jste učni čaroděje. Jdi si procvičit své nové kouzlo a můžeš mi poděkovat později. Nezapomeňte zkontrolovat všechny tyto příkazy na manuálových stránkách, pokud uvíznete nebo si nepamatujete, co udělali některé příznaky - průvodce nikdy není daleko od svých knih.

Pokud chcete jít hlouběji a dozvědět se více příkazů a použití, vřele doporučuji O'Reilly's Bash Cookbook jako dobrý výchozí bod.

Sledujte mě na médiu a získejte další návody, tipy a triky. Tento článek byl také zveřejněn na datastuff.tech, mém novém webu. Koukni na to!