Mit jelent a Linux metakarakterek és hogyan használja őket?

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 = molly
echo $ 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

Linux metakarakterek listája
karakter jelentés
. Bármelyik karakter
* Nulla vagy több karakter
^ Illesszen olyan vonalat vagy sztringet, amely egy mintával kezdődik (pl. ^ Gnome)
$ Egyezzen meg egy minta (vagyis gnome $) végződő vonalat vagy sztringet
\ Eltávolítja a következő karaktert, hogy eltávolítsa a speciális jelentését
[] Illesszen egy listát vagy tartományt (pl. ["Abc", "def"] vagy [1..9]
+ Egy vagy több előző (pl. Grep a +
? Nullpont vagy egy megelőző találat