Podľa Wikipédie je metacharakter akýkoľvek znak, ktorý má špeciálny význam, napríklad karát (^), znak dolára ($) alebo hviezdičku (*).
Pokiaľ ide o Linux, existuje veľký počet týchto metaznačiek a ich významy sa líšia v závislosti od toho, ktorý príkaz alebo program používate.
Full Stop ako metacharakter (.)
Skromná plná zastávka sa používa na darovanie aktuálnej pozície pri spustení príkazov ako cd , find alebo sh, ale v aplikáciách ako awk , grep a sed sa používa na označenie ľubovoľného znaku.
Napríklad nasledujúci príkaz nájde všetky súbory mp3 v aktuálnom priečinku a nižšie.
Nájsť . -name * .mp3
Ak spustíte daný príkaz vo svojom pracovnom adresári (pwd), pravdepodobne budete mať vrátené výsledky za predpokladu, že budete mať svoje súbory mp3 v hudobnom priečinku vo vašom domovskom priečinku.
Pozrite sa na tento príkaz:
ps -ef | grep f..efox
Príkaz ps uvádza všetky spustené procesy v počítači. Príkaz grep preberá riadky vstupu a vyhľadáva vzor.
Preto príkaz ps -ef dostane zoznam bežiacich procesov a dáva ho na grep, ktorý hľadá ľubovoľný riadok v zozname, ktorý má f..efox kde. môže znamenať ľubovoľný znak.
Ak máte spustený firefox, dostanete zápas. Podobne, ak máte program nazvaný fonefox alebo freefox beží, budú tiež vrátené.
Hviezdička ako metacharakter (*)
Hviezdička je všeobecne známy metacharakter a používa sa pri hľadaní vzoru na označenie 0 alebo viac.
Napríklad:
Nájsť . -name * .mp3
* .mp3 vracia zhodu pre ľubovoľný názov súboru, ktorý končí v .mp3. Podobne by som mohol použiť hviezdičku pomocou príkazu grep ako nasledujúci:
ps -ef | grep F * efox
Stojí za zmienku, že sa to trochu líši, pretože hviezda znamená nulu alebo viac, rovnako ako nájsť firefox, facefox a fonefox to tiež môže nájsť flutefox, ferretfox a dokonca len fefox.
Karát ako metacharakter (^)
Karát (^) sa používa na označenie začiatku čiary alebo reťazca. Tak ako sa používa?
Príkaz ls slúži na zoznam všetkých súborov v priečinku takto:
ls
Ak chcete vedieť všetky súbory v priečinku, ktoré začínajú určitým reťazcom, ako napríklad "gnome", karát sa dá použiť na zadanie reťazca.
Napríklad:
ls | grep ^ gnome
Upozorňujeme, že sú uvedené len súbory, ktoré začínajú s GNOME. Ak chcete mať súbory, ktoré majú názov GNOME kdekoľvek, potom by ste sa vrátili späť k hviezdičke.
Vo vyššie uvedenom príklade ls vráti zoznam názvov súborov a prechádza tento zoznam na grep, ktorý sa používa na prispôsobenie vzorov. grep vie, že karátový symbol znamená nájsť čokoľvek, čo začína znakmi, ktoré po ňom prídu a v tomto prípade je to gnome.
Symbol dolára ako metacharakter ($)
Symbol dolára môže mať viac významov ako metacharakter v systéme Linux.
Keď sa používa na porovnávanie vzorov, znamená to opačný k karátom a označuje akýkoľvek vzor, ktorý končí určitým reťazcom.
Napríklad:
ls | grep png $
Tento zoznam obsahuje zoznam všetkých súborov, ktoré končí png.
Symbol dolára sa používa aj na prístup k premenným prostredia v rámci bash shell.
Napríklad:
export pes = molly
echo $ pes
Linkový export pes = molly vytvára premennú prostredia nazývanú pes a nastaví jeho hodnotu na molil. Na prístup k premennej prostredia sa používa symbol $. So symbolom $ označí výstražný znak "dog dog" molický, ale bez toho, hlásenie ozveny psov len zobrazuje slovo pes.
Únikové metacharactery
Niekedy nechcete, aby metacharakter mal zvláštny význam. Čo ak máte súbor s názvom f.refox a súbor s názvom firefox.
Pozrite sa na nasledujúci príkaz:
ls | grep f.refox
Čo si myslíte, že sa vráti? Obaja f.refox a firefox sú vrátené, pretože obe zodpovedajú vzoru.
Ak chcete iba vrátiť f.refox, musíte uniknúť úplnej zastave, aby ste skutočne znamenali úplnú zastávku takto:
ls | grep f \\. refox
Spoločné meta-karantény a ich významy
znak | zmysel |
, | Každý znak |
* | Nula alebo viac znakov |
^ | Zhodte ľubovoľný riadok alebo reťazec, ktorý začína vzorom (tj ^ gnome) |
$ | Zodpovedajúci ľubovoľný riadok alebo reťazec končiaci vzorom (tj gnome $) |
\ | Vynechá ďalší znak, aby odstránil svoj špeciálny význam |
[] | Zhoda jedného zo zoznamu alebo rozsahu (tj ["abc", "def"] alebo [1..9] |
+ | Zhoda jednej alebo viacerých predchádzajúcich (tj grep a +) |
? | Zhoda nula alebo jedna predchádza |