Wat is Linux Meta karakters en hoe gebruik jy hulle

Volgens Wikipedia is 'n metakarakter enige karakter wat 'n spesiale betekenis het, soos 'n karat (^), dollar teken ($) of 'n asterisk (*).

In terme van Linux, is daar 'n redelike aantal van hierdie metate karakters en hul betekenisse verskil afhangende van watter opdrag of program jy hardloop.

Die volle stop as 'n metakarakter (.)

Die nederige punt word gebruik om die huidige posisie te skenk wanneer u instruksies soos cd , vind of sh uitvoer, maar binne toepassings soos awk , grep en sed word dit gebruik om enige karakter aan te dui.

As voorbeeld sal die volgende opdrag al die mp3-lêers in die huidige gids en onder vind.

vind. -name * .mp3

As u daardie opdrag in u huidige werksgids (pwd) uitvoer, sal u waarskynlik die resultate terugbring as u u mp3-lêers in 'n musiekmap in u tuisgids hou.

Kyk nou na hierdie opdrag:

ps -ef | grep f..efox

Die ps-opdrag lys al die lopende prosesse op u rekenaar. Die grep-opdrag neem lyne van insette en soek na 'n patroon.

Daarom kry die ps -ef-bevel 'n lys van lopende prosesse en gee dit grep wat soek na enige lyn in die lys wat f..fox het waar die. kan enige karakter beteken.

As jy 'n firefox het, sal jy 'n wedstryd kry. Net so, as jy 'n program genaamd fonefox of freefox gebruik het, sal hulle ook teruggestuur word.

Die sterretjie as 'n metakarakter (*)

Die asterisk is 'n meer algemeen bekende metakarakter en word gebruik om 0 of meer te bedoel wanneer jy na 'n patroon soek.

Byvoorbeeld:

vind. -name * .mp3

Die * .mp3 gee 'n match vir enige lêernaam wat eindig in .mp3. Net so kon ek die asterisk gebruik met die grep-opdrag soos die volgende toon:

ps -ef | grep F * efox

Dit is opmerklik dat dit effens verskil omdat die asterisk nul of meer beteken, sowel as die vind van firefox, facefox en fonefox. Dit kan ook fluitfos, ferretfox en selfs net fefox vind.

Die karat as 'n metakarakter (^)

Die karat (^) word gebruik om die begin van 'n lyn of 'n tou aan te dui. So hoe word dit gebruik?

Die ls-opdrag word gebruik om al die lêers in 'n gids soos volg te lys:

ls

As u al die lêers wil weet in 'n gids wat begin met 'n sekere string soos "gnome", dan kan die karat gebruik word om daardie string te spesifiseer.

Byvoorbeeld:

ls | grep ^ gnome

Let daarop dat dit slegs lêers bevat wat met gnome begin. As jy lêers wil hê wat 'n kabouter in die lêernaam het, sal jy weer terugkeer na die asterisk.

In die bostaande voorbeeld gee die ls 'n lys van lêername terug en slaag dit na grep wat gebruik word vir patroonpassing. grep weet dat die karat simbool beteken enigiets wat begin met die karakters wat daarnaas kom en in hierdie geval is dit 'n kabouter.

Die dollar simbool as 'n metakarakter ($)

Die dollar simbool kan verskeie betekenisse as 'n metakarakter in Linux hê.

Wanneer dit gebruik word om patrone te pas, beteken dit die teenoorgestelde om te karat en dui enige patroon aan wat eindig met 'n spesifieke string.

Byvoorbeeld:

ls | grep png $

Hiermee word alle lêers wat eindig met png, lys.

Die dollar simbool word ook gebruik om omgewing veranderlikes binne die bash dop te verkry.

Byvoorbeeld:

uitvoer hond = molly
eggo $ hond

Die lyn uitvoer hond = molly skep 'n omgewingsveranderlike genoem hond en stel sy waarde in molly. Om toegang tot die omgewingsveranderlike te verkry, word die $ simbool gebruik. Met die $ simbool vertoon die echo $ -hondstelling molly, maar sonder dat die echohondverklaring net die woordhond vertoon.

Ontsnapping van meta karakters

Soms wil jy nie dat die metakarakter 'n spesiale betekenis het nie. Wat as jy 'n lêer met die naam f.refox en 'n lêer genaamd firefox het.

Kyk nou na die volgende opdrag:

ls | grep f.refox

Wat dink jy word teruggestuur? Beide f.refox en firefox word teruggestuur omdat hulle albei die patroon pas.

Om net f.refox terug te stuur, sal jy die volle einde moet ontsnap om eintlik 'n einde te maak soos volg:

ls | grep f \\. refox

Algemene Meta karakters en hul betekenis

Lys van Linux Meta karakters
Karakter wat beteken
. Enige karakter
* Nul of meer karakters
^ Pas enige lyn of tou wat met 'n patroon begin (dws ^ gnome)
$ Pas enige lyn of tou wat eindig met 'n patroon (dws gnome $)
\ Ontvlug die volgende karakter om sy spesiale betekenis te verwyder
[] Pas een van 'n lys of reeks (dws ["abc", "def"] of [1..9]
+ Pas een of meer voorafgaande aan (dws grep a +)
? Pas nul of een vooraf