Wat binne Linux metacaracters en hoe brûk jo se

Neffens Wikipedia is in metacharakter in karakter dat in bysûndere betsjutting hat, lykas in karat (^), dollar-teken ($) of in asterisk (*).

Yn betingsten fan Linux binne der in juste nûmer fan dizze metacharacters en har betsjuttingen ferskille ôfhinklik fan hokker kommando of programma dy jo rinne.

De folsleine stop as in metacharakter (.)

De minske folsleine stop wurdt brûkt om de hjoeddeiske posysje te dwaan as jo befetsjes lykas cd , finde of sh sille, mar binnen applikaasjes lykas awk , grep en sed wurde brûkt om elke karakter te oanjaan.

As foarbyld, sil it folgjende kommando alle mp3-bestannen fine yn 'e aktuele map en hjirûnder.

fyn. -name * .mp3

As jo ​​dit kommando útfiere, sille jo wierskynlik weromkomme, as jo jo mp3-bestannen bewarje yn in muzikale map yn jo thúsblêd.

Sjoch dan nei dit kommando:

ps -ef | grep f..efox

It ps kommando listt alle rinnende prozes op jo kompjûter. It kommando grep nimt rigels fan ynput en sykjen foar in patroan.

Dêrom krijt it ps -ef-kommando in list mei rinnende prozessen en jout it ta grep dy't elke line yn de list sykje dy't f..efox hat wêr't de. kin elke karakter betsjutte.

As jo ​​firefox hawwe hast dan in wedstriid te krijen. As jo ​​ek in programma hawwe dy't fonefox of freefox rint, hawwe se ek weromjûn.

De asterisk as metacharakter (*)

De asterisk is in mear algemien bekende metacharakter en wurdt brûkt om 0 of mear te betsjinjen by it sykjen nei in patroan.

Bygelyks:

fyn. -name * .mp3

De * .mp3 jout in match foar elke triemnamme dy't einiget yn .mp3. Lykwols koe ik de asterisk mei de grep kommando brûke as de neikommende toanen:

ps -ef | grep F * efox

It is it wurdich om te ûndersykjen dat dit wat lytser is om't de asterisk nul is of mear as it sykjen fan firefox, facefox en fonefox kin it ek fine flutefox, ferretfox en sels gewoan fefox.

De karat as in metacharakter (^)

De karat (^) wurdt brûkt om it begjin fan in line of in string te oanjaan. Dus hoe wurdt it brûkt?

It kommando ls wurdt brûkt om alle triemmen yn in map te listjen as:

ls

As jo ​​alle bestannen yn in map winskje wolle dat begjint mei in bepaalde tekenrige lykas "gnome", dan kin de karat brûkt wurde om dizze stimpel op te jaan.

Bygelyks:

ls | grep ^ gnom

Tink derom dat dit allinich triemmen lûkt dy't begjinne mei gnome. As jo ​​triemmen hawwe dy't in gnome hawwe yn 'e triemnamme, dan kinne jo wer werhelje nei de asterisk.

Yn it hjirboppe foarbyld jout de ls in list mei filenames werom en jout dizze list nei grep dy't brûkt wurdt foar patroanen. Grep wit dat it karatsymboal wat fine dat begjint mei de personaazjes dy't nei har komme en yn dit gefal is it in gnom.

It Dollar-symboal as in Metacharakter ($)

It dollar-symboal kin meardere betsjuttings hawwe as metacharakter yn Linux.

Wannear brûkt wurdt foar patroanen betsjut it tsjinoerstelde foar karat en bepaalt alle patroanen dy't einiget mei in bepaalde string.

Bygelyks:

ls | grep png $

Dit list alle files dy't einigje mei png.

It dollar-symboal wurdt ek brûkt om tagong fan omjouwingsfariabelen binnen de bash-shell.

Bygelyks:

eksport dog = molly
echo $ hûn

De line eksportearje hûn = molly makket in omjouwingsfariabele neamd hûn en set har wearde oan molly. Om tagong te krijen ta de omjouwingsfariabele wurdt it symboal brûkt. Mei it $ symboal sil de echo $ hûn-oanfetting molly mar sûnder it sjen litte, de echo-hûnebestân gewoon it wurd hûn.

Metacharacters te ûntkommen

Soms wolle jo de metacharakter net in spesjaal betsjutting hawwe. Wat as jo in triem hawwe mei de namme f.refox en in triem neamd Firefox.

Sjoch dan nei it folgjende kommando:

ls | grep f.refox

Wat tinke jo werom? Sawol f.refox en firefox wurde weromjûn, om't beide beide it patroon passe.

Om allinne f.refox werom te kommen, moatte jo de folsleine stop stopje om eins in folsleine stop te betsjutten:

ls | grep f \\ refox

Gemeentlike metacaraten en harren betsjuttings

List fan Linux Metacharacters
Personaazje Betsjutting
. Elke karakter
* Nul of mear persoanen
^ Meitsje elke line or string dy't begjint mei in patroan (ie ^ gnome)
$ Meitsje in line or string dy't einiget mei in patroan (dit is gnome $)
\ Feroaret it folgjende karakter om syn spesjale betsjutting te ferwiderjen
[] Meitsje ien fan in list of berik (dit "abc", "def"] of [1..9]
+ Meitsje ien of mear foarôfgeande (ie grep a +)
? Spiel nul of ien foarôfgeand