A Wikipedia szerint a metakarakter minden olyan karakter, amely különleges jelentéssel bír, mint például a karat (^), a dollárjel ($) vagy a csillag (*).
A Linux szempontjából jó néhány ilyen metakarakter létezik, és ezek jelentései attól függően változnak, hogy melyik parancsot vagy programot futja.
A teljes leállítás metakarakterként (.)
Az alázatos teljes ütköző az aktuális pozíció adományozására szolgál, amikor olyan parancsokat futtat, mint a cd, find vagy sh, de olyan alkalmazásokon belül, mint az awk, a grep és a sed.
Példaként az alábbi parancs megtalálja az összes mp3 fájlt az aktuális mappában és az alábbiakban.
megtalálja . -name * .mp3
Ha ezt a parancsot futtatod a munkakönyvtárban (pwd), akkor valószínűleg visszaadod az eredményeket, feltételezve, hogy az mp3 fájlokat a saját mappájában lévő zenei mappában tartod.
Most nézd meg ezt a parancsot:
ps -ef | grep f..efox
A ps parancs felsorolja az összes futó folyamatot a számítógépen. A grep parancs beviteli sorokat vesz fel és egy mintát keres.
Ezért a ps -ef parancs a futó folyamatok listáját kapja, és megadja azt a grep-nak, amely a listában lévő olyan sorokat keresi, amelyek f..efox-val rendelkeznek, ahol a. bármilyen karaktert jelenthet.
Ha van tűzjelző, akkor kapsz egy mérkőzést. Hasonlóképpen, ha van egy fonefox programod vagy egy szabadon futó program, akkor szintén visszaadod őket.
A csillag mint metakarakter (*)
A csillag egy általánosabban ismert metakarakter, és minta keresésekor 0 vagy többet jelent.
Például:
megtalálja . -name * .mp3
A * .mp3 visszaad egy mérkőzést minden olyan fájlnévhez, amely a .mp3 fájlban végződik. Hasonlóképpen használhattam a csillagot a grep paranccsal, ahogy az alábbiak szerint:
ps -ef | grep F * efox
Érdemes megjegyezni, hogy ez kissé különbözik, mert a csillag nulla vagy többet jelent, így a tűz, a facefox és a fonefox megtalálása is megtalálható a flutefox, a ferretfox és még csak a fefox.
A karat mint metakarakter (^)
A karat (^) egy vonal vagy egy szál kezdetét jelöli. Tehát hogyan használják?
Az ls parancs a mappában lévő összes fájlt a következőképpen sorolja fel:
ls
Ha egy olyan mappában lévő összes fájlt szeretne megtudni, amely egy bizonyos karakterlánccal kezdődik, mint például a "gnome", akkor a karátot használhatja a string meghatározására.
Például:
ls | grep ^ gnome
Ne feledje, hogy ez csak a gnómal kezdődő fájlokat tartalmazza. Ha olyan fájlokat szeretne, amelyeknek van gnome a fájlnevében bárhol, akkor ismét visszatér a csillaghoz.
A fenti példában az ls visszaadja a fájlnevek listáját, és átadja ezt a listát a grepnek, amelyet a mintaegyeztetéshez használ. A grep tudja, hogy a karátos szimbólum azt jelenti, hogy megtalálja mindazt, ami az utána következő karakterekkel kezdődik, és ebben az esetben egy gnóm.
A dollár szimbólum metakarakterként ($)
A dollárszimbólumnak több jelentése is lehet, mint egy metakarakter a Linuxon belül.
A minták illesztésére használva azt jelenti, hogy ellentétes a karáttal és jelöli azokat a mintákat, amelyek egy adott karakterlánccal végződnek.
Például:
ls | grep png $
Ez felsorolja azokat a fájlokat, amelyek a png-vel végződnek.
A dollár szimbólum a környezeti változók elérésére is használható a bash-héjban.
Például:
export kutya = mollyecho $ kutya
A vonal export kutya = molly hozzon létre egy kutyaként ismert környezeti változót, és értékét molly értékre állítja. A környezeti változó eléréséhez a $ szimbólumot használjuk. A $ szimbólummal az echo $ kutya kijelentése molly, de anélkül jelenik meg, az echo dog utasítás csak a kutya szót jeleníti meg.
A Metacharacterek kivonulása
Néha nem akarod, hogy a metakarakternek különleges jelentése legyen. Mi van, ha van egy f.refox nevű fájl és egy tűzfax nevű fájl?
Most nézze meg a következő parancsot:
ls | grep f.refox
Mit gondolsz, mit visznek vissza? Mind az f.refox, mind a firefox visszakerül, mert mindkettő egyezik a mintával.
Csak az f.refox visszaállításához el kell menekülnie a teljes megállásból, hogy ténylegesen teljes leállást jelent a következők szerint:
ls | grep f . refox
Közös metakarakterek és jelentéseik
karakter | Jelentés |
. | Bármelyik karakter |
* | Nulla vagy több karakter |
^ | Illesszen olyan vonalat vagy sztringet, amely egy mintával kezdődik (azaz ^ gnome) |
$ | Illesszen egy vonalat vagy sztringet egy minta szerint (vagyis gnome $) |
Eltávolítja a következő karaktert, hogy eltávolítsa a speciális jelentését | |
Illesszen egy listát vagy tartományt (vagyis "abc", "def" vagy 1..9 | |
+ | Egy vagy több előző (azaz grep a + |
? | Nullpont vagy egy megelőző találat |