Bash Globbing Tutorial

Bash Globbing Tutorial



Bash nepodporuje nativní regulární výrazy jako některé jiné standardní programovací jazyky. Funkce skořepiny Bash, která se používá pro párování nebo rozšiřování konkrétních typů vzorů, se nazývá globbing. Globbing se používá hlavně k přiřazování názvů souborů nebo hledání obsahu v souboru. Globbing používá k vytvoření vzoru zástupné znaky. Níže jsou popsány nejběžnější zástupné znaky, které se používají k vytváření vzorů globování.

‚?‘ se používá k přiřazení libovolného jednotlivého znaku. Můžeš použít ‚?‘ pro vícekrát pro shodu více znaků.







Příklad-1:



Předpokládejme, že chcete vyhledávat názvy textových souborů, jejichž názvy jsou 4 znaky dlouhé a mají příponu .txt . Globbovací vzor můžete použít pomocí ‘ ? “Čtyřikrát, abych tento úkol provedl.



Vyhledejte seznam všech souborů a složek aktuálního adresáře.





$ls-ten

Spusťte následující příkaz a vyhledejte soubory, jejichž názvy jsou čtyři znaky dlouhé a neznámé.

$ ls -l ????. txt



Příklad-2:

Předpokládejme, že chcete prohledávat soubory dokumentů, jejichž názvy jsou 8 znaků dlouhé, první 4 znaky jsou f, o, o a t a rozšíření je doc . Chcete -li prohledávat soubory, spusťte následující příkaz s globbovacím vzorem.

$ls -tennoha ????. doc

Příklad-3:

Předpokládejme, že víte, že název souboru je 'nejlepší' a přípona je 3 znaky dlouhá, ale neznám příponu. Spusťte následující příkaz pomocí ‘? “Prohledá všechny soubory s názvem„ test “s libovolnou příponou o třech znacích.

$ls -tennejlepší.???

Hvězdička - (*)

'*' se používá pro shodu nula nebo více znaků. Pokud máte k vyhledávání jakéhokoli souboru nebo informací méně informací, můžete použít '*' v globbujícím vzoru.

Příklad -1:

Předpokládejme, že chcete prohledávat všechny soubory 'Pl' rozšíření. Spusťte následující příkaz pomocí '*' udělat ten úkol.

$ls -ten *.pl

Příklad-2:

Předpokládejme, že znáte počáteční znak pouze názvu souboru, který je 'na' . Spuštěním následujícího příkazu pomocí „*“ vyhledáte všechny soubory aktuálního adresáře, jejichž názvy začínají 'na' .

$ls -tenna*.*

Příklad-3:

„*“ Ve skriptu bash můžete použít pro různé účely bez hledání souborů. Vytvořte bash soubor s názvem 'Check.sh' s následujícím skriptem. Zde, když uživatel napíše „ y “nebo„ Y “nebo„ ano “nebo„ ano “ pak „Potvrzeno“ vytiskne a kdy typ napíše „N“ nebo „N“ nebo „ne“ nebo „ne“ pak 'Nepotvrzeno' vytiskne.

#!/bin/bash
vyhodil 'Chcete potvrdit?'
čístOdpovědět
případ $ odpověď v
[Ano]* ) vyhodil 'Potvrzeno.';;
[Č]* ) vyhodil 'Nepotvrzeno.';;
*) vyhodil 'Zkus to znovu.';;
esac

Spusťte skript.

$bashcheck.sh

Hranatá závorka - ([])

„[]“ se používá k přiřazení postavy z dosahu. Některá z většinou používaných deklarací dosahu jsou uvedena níže.

Všechny velké abecedy jsou definovány rozsahem jako, [: upper:] nebo [A-Z].

Všechny malé abecedy jsou definovány rozsahem jako, [: nižší:] nebo [a-z].

Všechny číselné číslice jsou definovány rozsahem jako, [: číslice:] nebo [0-9].

Všechny velké a malé abecedy jsou definovány rozsahem jako, [: alpha:] nebo [a-zA-z].

Všechny velké abecedy, malá abeceda a číslice jsou definovány rozsahem jako, [: alnum:] nebo [a-zA-Z0-9]

Příklad -1:

Spusťte následující příkaz a prohledejte všechny soubory a složky, jejichž název obsahuje p nebo co nebo r nebo s .

$ls -ten [p-s]*

Příklad-2:

Spuštěním následujícího příkazu vyhledáte všechny soubory a složky, jejichž název začíná libovolnou číslicí od 1 do 5.

$ls -ten [1-5]*

Chybí mu - (^)

Můžeš použít '^' s hranatou závorkou pro konkrétnější definování vzoru globbingu. '^' lze použít uvnitř i vně hranaté závorky. „^“ Se používá mimo hranatou závorku k vyhledávání obsahu souboru, který začíná daným rozsahem znaků. „^“ Se používá v hranaté závorce k zobrazení veškerého obsahu souboru zvýrazněním řádků začínajících daným rozsahem znaků. Pro vyhledávání konkrétního obsahu ze souboru můžete použít různé typy vzorů globování. 'rukojeť' příkaz se používá pro vyhledávání obsahu v bash. Předpokládejme, že máte textový soubor s názvem „List.txt“ s následujícím obsahem. Pro daný soubor vyzkoušejte následující příklady.

Jablko
4000
Banán
700
oranžový
850
Hruška
9000
jackdruit

Příklad - 1:

Spusťte následující příkaz a vyhledejte tyto řádky list.txt soubor začínající na P nebo Q nebo R. .

$ grep '^[P-R]' list.txt

Příklad - 2:

Spuštěním následujícího příkazu zvýrazněte tyto řádky list.txt soubor začínající na A nebo B nebo C. .

$ grep '[^A-C]' list.txt

Vykřičník - (!)

Můžeš použít '!' uvnitř vzorového rozsahu. Funguje to stejně jako použití symbolu „^“ mimo vzor rozsahu. Několik příkladů použití '!' značka je uvedena níže.

Příklad - 1:

Spuštěním následujícího příkazu zobrazíte tyto řádky list.txt soubor začínající na „P“ nebo Q nebo R. .

$ grep [! P-R] list.txt

Příklad - 2:

Spuštěním následujícího příkazu zobrazíte tyto řádky list.txt soubor, který začíná libovolnou číslicí z 4 až 8 .

$ grep [! 4-8] list.txt

Znak dolaru - ($)

'$' slouží k definování koncového znaku. Pokud víte, že chcete vyhledávat informace podle posledního znaku, můžete použít '$' v globbujícím vzoru.

Příklad - 1:

Spusťte následující příkaz a vyhledejte tyto řádky list.txt soubor, který končí na 'na' .

$ grep a $ list.txt

Příklad - 2:

Spusťte následující příkaz a vyhledejte tyto řádky list.txt soubor, který končí číslem padesátka .

$ grep 50 $ list.txt

Curly bracket - ({})

'{}' lze použít k párování názvů souborů s více než jedním globbingovým vzorem. Každý vzor je v složené závorce bez mezer oddělený znakem „,“. Některé příklady jsou uvedeny níže.

Příklad - 1:

Spusťte následující příkaz a vyhledejte soubory, jejichž názvy jsou 5 znaků dlouhé a přípona je 'Sh' nebo poslední dva znaky souborů jsou 'Svatý' a rozšíření je 'Txt' .

$ ls -l {?????. sh,*st.txt}

Příklad - 2:

Spuštěním následujícího příkazu odstraníte všechny soubory, jejichž přípony jsou „Doc“ nebo „docx“ .

$rm {*.doc,*.docx}

Potrubí - (|)

Znak „|“ se také používá k aplikaci více než jedné podmínky na globbující vzor. Každý vzor je v příkazu oddělen symbolem ‘|‘.

Příklad - 1:

Spusťte následující příkaz a vyhledejte názvy souborů, které začínají znakem „a“ a mají příponu „bash“ nebo „sh“.

$lsna*+(.bash|.sh)

Příklad - 2:

Vytvořte bash soubor s názvem „Menu.bash“ a přidejte následující skript. Pokud uživatel zadá 1 nebo S. pak se vytiskne Hledání textu . Pokud uživatel zadá 2 nebo R. pak se vytiskne Nahrazování textu . Pokud uživatel zadá 3 nebo D pak se vytiskne Mazání textu . Vytiskne se Zkus to znovu pro jakýkoli jiný vstup.

#!/bin/bash
vyhodil 'Vyberte libovolnou možnost z nabídky:'
čístOdpovědět
případ $ odpověď v
1 |S) vyhodil 'Hledání textu';;
2 |R.) vyhodil 'Nahrazování textu';;
3 |D) vyhodil 'Mazání textu';;
*) vyhodil 'Zkus to znovu.';;
esac

Spusťte skript.

$bashmenu.bash

ZÁVĚR

V tomto tutoriálu jsou pomocí velmi jednoduchých příkladů vysvětleny některé z nejčastěji používaných globbingových vzorů. Doufám, že po procvičení výše uvedených příkladů vám bude koncept globbingu jasný a budete jej moci úspěšně aplikovat v bash příkazech a skriptech.

Pro více informací sledujte toto video: