Podle Wikipedie je metacharakter libovolný znak, který má zvláštní význam, jako karát (^), znak dolaru ($) nebo hvězdičku (*).
Pokud jde o Linux, existuje poměrně mnoho těchto metacharacterů a jejich významy se liší v závislosti na tom, který příkaz nebo program, který používáte.
Plná zastávka jako metacharakter (.)
Pokorná plná zastávka slouží k darování aktuální pozice při spouštění příkazů, jako je cd , find nebo sh, ale v aplikacích jako awk , grep a sed se používá k označení libovolného znaku.
Například následující příkaz najde všechny soubory mp3 v aktuální složce a níže.
najít. -name * .mp3
Pokud spustíte tento příkaz ve vašem pracovním adresáři (pwd), pravděpodobně budete mít vrácené výsledky za předpokladu, že budete mít soubory mp3 v hudebním složku v domovské složce.
Nyní se podívejte na tento příkaz:
ps -ef | grep f..efox
Příkaz ps uvádí všechny spuštěné procesy v počítači. Příkaz grep vezme řadu vstupů a vyhledá vzor.
Proto příkaz ps -ef dostane seznam spuštěných procesů a dává jej grepovi, který hledá libovolný řádek v seznamu, který má f..efox kde. může znamenat jakoukoli postavu.
Pokud máte firefox běh, dostanete zápas. Stejně tak, pokud máte program nazvaný fonefox nebo freefox, budou také vráceny.
Hvězdička jako metacharakter (*)
Hvězdička je více všeobecně známou metacharakteru a používá se při hledání vyhledávacího vzorku 0 nebo více.
Například:
najít. -name * .mp3
* .mp3 vrátí shodu pro libovolný název souboru, který končí v .mp3. Podobně bych mohl použít hvězdičku pomocí příkazu grep jako následující:
ps -ef | grep F * efox
Stojí za to poznamenat, že se to trochu liší, protože hvězdička znamená nulu nebo více, stejně jako nalezení firefoxu, facefoxu a fonefoxu také může najít flutefox, ferretfox a dokonce i jen fefox.
Karát jako metacharakter (^)
Karát (^) se používá k označení začátku řádku nebo řetězce. Tak jak se používá?
Příkaz ls slouží k zobrazení všech souborů v adresáři následujícím způsobem:
ls
Chcete-li znát všechny soubory ve složce, které začínají určitým řetězcem, například "gnome", pak karát lze použít k zadání řetězce.
Například:
ls | grep ^ gnome
Všimněte si, že se jedná pouze o soubory, které začínají s GNOME. Pokud chcete soubory, které mají název GNOME kdekoliv, pak byste se opět vrátili zpět k hvězdičce.
Ve výše uvedeném příkladu ls vrátí seznam názvů souborů a předá tento seznam znaku grep, který se používá pro přizpůsobení vzoru. grep ví, že karátový symbol znamená najít něco, co začíná znaky, které přijdou za ním a v tomto případě je to gnome.
Symbol dolaru jako metacharakter ($)
Symbol dolaru může mít více významů jako metacharakter v rámci systému Linux.
Když se používá pro porovnávání vzorků, znamená to opačný k karátu a označuje libovolný vzorec, který končí určitým řetězcem.
Například:
ls | grep png $
Zobrazí seznam všech souborů, které končí png.
Symbol dolaru se také používá pro přístup k proměnným prostředí v rámci bash shellu.
Například:
exportní pes = molly
echo $ pes
Linkový export pes = molly vytváří proměnnou prostředí nazývanou pes a nastavuje jeho hodnotu na molí. Pro přístup k proměnné prostředí je použit symbol $. S symbolem $ echo $ dog statement se zobrazuje molly, ale bez něj, ozvěnové výkazy psů zobrazují slovo dog.
Únikové metacharactery
Někdy nechcete, aby metacharakter měl zvláštní význam. Co když máte soubor nazvaný f.refox a soubor nazvaný firefox.
Nyní se podívejte na následující příkaz:
ls | grep f.refox
Co si myslíte, že je vrácena? Oba f.refox a firefox jsou vráceny, protože oba odpovídají vzoru.
Chcete-li vrátit pouze f.refox, musíte uniknout úplné zastávce, aby skutečně znamenalo úplnou zastavení následujícím způsobem:
ls | grep f \\. refox
Společné metacharactery a jejich významy
Charakter | Význam |
. | Libovolná postava |
* * * | Nula nebo více znaků |
^ | Porovnejte libovolný řádek nebo řetězec, který začíná vzorem (tj. ^ Gnome) |
$ | Shodte libovolný řádek nebo řetězec končící vzorem (tj. Gnome $) |
\ | Vynechá další znak, aby odstranil svůj zvláštní význam |
[] | Shodte jeden ze seznamu nebo rozsahu (např. ["Abc", "def"] nebo [1..9] |
+ | Shodte jeden nebo více předchozích (tj. Grep a +) |
? | Odpovídá nula nebo jedna předcházející |