Linux metakarakterek és jelentésük
A metakarakter minden olyan karakter, amelynek különleges jelentése van, például karát (^), dollárjel ($) vagy csillag (*). A Linuxban szép számmal vannak ilyen metakarakterek, és jelentésük attól függően eltérő Linux parancs vagy az Ön által használt program.
A pont mint metakarakter (.)
A Teljes Stop (.) jelzi az aktuális pozíciót olyan parancsok futtatásakor, mint pl CD, megtalálja, vagy sh. Olyan alkalmazásokban, mint pl awk, grep, és sed, ez egy helyettesítő karakter, amely bármely karakter meghatározott számát jelöli.
Példaként a következő parancs mindent megtalál MP3 fájlok az aktuális mappában és annak almappáiban.
megtalálja. -type f -name '*.mp3'
Ha a parancsot a jelenlegi munkakönyvtárban (pwd) futtatja, akkor az eredményeket fog látni, feltételezve, hogy az MP3 fájlokat a saját mappájában található zenemappában tárolja.
Most nézd meg ezt a parancsot:
ps -ef | grep f..efox
A ps parancs felsorolja a számítógépén futó összes folyamatot. A grep parancs bemeneti sorokat vesz, és mintát keres.

A ps -ef parancs lekéri a futó folyamatok listáját. A cső (|) metakarakter elküldi ezt a listát a grep parancsnak, amely megkeresi a listában lévő bármely sort, amely tartalmazza f..efox, ahol a pontok két tetszőleges karakterre utalnak.
Ha a Firefox fut, kapsz egyezést. Hasonlóképpen, ha egy fonefox vagy freefox nevű program fut, akkor ezek is visszaküldésre kerülnek.
Ha csak egyetlen karaktert kell keresnie, a pont (.) metakarakter használata helyett használja a? metakarakter. Használni a? A metakarakter bármely egyedi karakterre utal akár a minta elején, akár a végén.
A csillag, mint metakarakter (*)
A csillag (*) egy általánosan ismert metakarakter. Ez azt jelenti, hogy nulla vagy több karakter van a minta keresésekor. Például:
ls *.flac

Az *.flac A parancs része egyezést ad vissza minden olyan fájlnévhez, amely .flac végződésű. Hasonlóképpen használhatja a csillagot a grep paranccsal az utolsó szakaszban az alábbiak szerint:
ps -ef | grep f*fox
Ez némileg eltér, mivel a csillag nullát vagy többet jelent, így a firefox, facefox és fonefox keresése mellett megtalálja a flutefoxot, a ferretfoxot és a fefoxot is.

A karát mint metakarakter (^)
A karát (^) egy sor vagy egy karakterlánc kezdetének jelölésére szolgál. Tehát hogyan használják?
Az ls parancs a következőképpen listázza ki a mappában lévő fájlokat:
ls -a
Ha olyan mappában szeretné felsorolni a fájlokat, amelyek egy bizonyos karakterlánccal kezdődnek, például a gnome, akkor a karát segítségével megadhatja ezt a karakterláncot. Például:
ls -a | grep ^gnome
Ez felsorolja a gnome-mal kezdődő fájlokat. Ha olyan fájlokat szeretne, amelyekben bárhol szerepel a gnome, használja a csillagot.

A fenti példában az ls parancs visszaadja a fájlnevek listáját, és átadja a listát a grep parancsnak, amely a mintaillesztésre szolgál. Grep tudja, hogy a karát szimbólum azt jelenti, hogy meg kell találni bármit, ami az utána következő karakterekkel kezdődik, és ebben az esetben ez a gnóm.
A dollár szimbólum, mint metakarakter ($)
A dollár szimbólum ($) több jelentéssel bír metakarakterként a Linuxban. Ha a minták illesztésére használják, ez a karát ellentétét jelenti, és minden olyan mintát jelöl, amely egy adott karakterlánccal végződik. Például:
ls | grep png$
Ez felsorolja az összes png-vel végződő fájlt.
A dollár szimbólumot a bash-héjon belüli környezeti változók elérésére is használják. Például:
#! /bin/bash
export kutya=molly
echo $kutya

A vonal export kutya=molly nevű környezeti változót hoz létre kutya és beállítja az értékét molly. A környezeti változó eléréséhez használja a $ szimbólumot. A $ szimbólummal a echo $kutya nyilatkozat mollyt jeleníti meg. Enélkül a visszhang kutya utasítás a kutya szót jeleníti meg.
Kilépő metakarakterek (\\)
Néha nem akarod, hogy a metakarakternek különleges jelentése legyen. Például, ha egy fájlt meghívnak f.refox és egy másik fájlt hívnak meg firefox.
Most nézze meg a következő parancsot:
ls | grep f.refox
Mit gondolsz, mi kerül vissza? Az f.refox és a firefox is visszaadásra kerül, mert mindkettő megfelel a mintának.

Ha csak az f.refoxot szeretné visszaadni, hagyja ki a pontot, hogy ténylegesen pontot jelentsen, az alábbiak szerint:
ls | grep f\\.refox
A zárójelek metakarakterként ([])
Használhat zárójeleket ([ ])mintákat keresve. A zárójelek konkrét betűket adnak meg, amelyek a mintában bárhol megfelelnek. Például:
ls | grep [abc]
Ez felsorolja az a, b vagy c betűket tartalmazó fájlokat.

Használhat zárójeleket a keresési minta elején, végén vagy közepén.
Betűtartomány kereséséhez használja a kötőjelet (-). Például, ls [a-h]* olyan fájlokat ad vissza, amelyek a-tól h-ig terjedő tetszőleges betűvel kezdődnek.
Az Accent Grave metakarakter
A fenti példákban a pipe metakarakter elküldi az egyik parancs eredményét (például az ls parancsot) egy másik parancsnak (például a grep parancsnak).
Ennek másik módja a hátsó idézet, más néven ékezetes sír (`), az egyik parancs eredményét egy másik parancsba szúrhatja be. Ehhez tárolja egy változóban az egyik parancs eredményét. Például:
command=`ls -lah`
echo $parancs

A példa rendkívül kitalált, és valószínűleg soha nem fog ilyesmit csinálni, de láthatja, hogyan működik. A backtick karakter lefuttat egy parancsot, és elmenti az eredményt. Ez hasznos lehet a szkriptezésben, de kevésbé rugalmas, mint a pipe használata egyszerű parancsokhoz.
Gyakori metakarakterek és jelentésük
karakter | Jelentése |
. | Bármilyen karakter. |
* | Nulla vagy több karakter. |
^ | Bármely mintával kezdődő sort vagy karakterláncot egyeztethet (például ^gnome). |
$ | Illesszen bármilyen sort vagy karakterláncot, amely mintával végződik (például gnome$). |
\ | Megszökik a következő karaktertől, hogy eltávolítsa annak különleges jelentését. |
[] | Egyezzen meg egy listából vagy tartományból (például ["abc", "def"] vagy [1..9]). |
+ | Párosítson egy vagy több előzőt (például grep a+). |
? | Egyezzen nulla vagy egy előtte. |