Skip to main content

Linux metatekens en hun betekenissen

WAT ZIJN WE STERK! (Juni- 2026)

WAT ZIJN WE STERK! (Juni- 2026)
Anonim

Volgens Wikipedia is een metateken een teken met een speciale betekenis, zoals een karaat (^), dollarteken ($) of een asterisk (*).

In termen van Linux zijn er een behoorlijk aantal van deze metatekens en hun betekenis verschilt, afhankelijk van welk commando of programma je gebruikt.

De volledige stop als een metateken (.)

De eenvoudige volledige stop wordt gebruikt om de huidige positie te doneren bij het uitvoeren van commando's zoals cd, find of sh, maar binnen toepassingen zoals awk, grep en sed wordt het gebruikt om elk karakter aan te duiden.

Als een voorbeeld, zal de volgende opdracht alle mp3-bestanden in de huidige map en hieronder vinden.

vind . -name * .mp3

Als je die opdracht in je huidige werkdirectory (pwd) uitvoert, krijg je waarschijnlijk resultaten geretourneerd, ervan uitgaande dat je je mp3-bestanden in een muziekmap in je thuismap bewaart.

Bekijk nu dit commando:

ps -ef | grep f..efox

De opdracht ps vermeldt alle actieve processen op uw computer. De grep-opdracht neemt invoerregels en zoekt naar een patroon.

Daarom krijgt de opdracht ps -ef een lijst met actieve processen en wordt deze gegeven aan grep die zoekt naar een regel in de lijst met f..efox waarbij de. kan elk teken betekenen.

Als je firefox draait, krijg je een match. Evenzo, als u een programma hebt met de naam fonefox of freefox, zullen ze ook worden geretourneerd.

Het sterretje als metateken (*)

Het sterretje is een meer algemeen bekend metatekenmerk en wordt gebruikt om 0 of meer te betekenen bij het zoeken naar een patroon.

Bijvoorbeeld:

vind . -name * .mp3

De * .mp3 retourneert een overeenkomst voor elke bestandsnaam die eindigt op .mp3. Evenzo had ik de asterisk met de grep-opdracht kunnen gebruiken als de volgende shows:

ps -ef | grep F * efox

Het is vermeldenswaard dat dit enigszins verschilt omdat de asterisk nul of meer betekent, maar naast het vinden van firefox, facefox en fonefox kan het ook flutefox, ferretfox en zelfs alleen fefox vinden.

De karaat als een metateken (^)

De karaat (^) wordt gebruikt om het begin van een lijn of een reeks aan te duiden. Dus hoe wordt het gebruikt?

Met de opdracht ls worden alle bestanden in een map als volgt weergegeven:

ls

Als je alle bestanden in een map wilt weten die met een bepaalde string zoals "gnome" begint, dan kan de karaat worden gebruikt om die string te specificeren.

Bijvoorbeeld:

ls | grep ^ kabouter

Merk op dat dit alleen bestanden bevat die beginnen met gnome. Als u bestanden wilt die ergens in de bestandsnaam staan, dan keert u weer terug naar het sterretje.

In het bovenstaande voorbeeld retourneert het ls een lijst met bestandsnamen en geeft die lijst door aan grep die wordt gebruikt voor patroonvergelijking. grep weet dat het karaatsymbool betekent iets vinden dat begint met de karakters die erachter komen en in dit geval is het een kabouter.

Het dollarteken als metateken ($)

Het dollarsymbool kan meerdere betekenissen hebben als metateken in Linux.

Wanneer gebruikt om patronen overeen te laten komen, betekent dit het tegenovergestelde van karaat en duidt elk patroon aan dat eindigt met een bepaalde reeks.

Bijvoorbeeld:

ls | grep png $

Hiermee worden alle bestanden weergegeven die eindigen op png.

Het dollarsymbool wordt ook gebruikt om toegang te krijgen tot omgevingsvariabelen binnen de bashshell.

Bijvoorbeeld:

hond exporteren = mollyecho $ dog

De lijnuitvoerhond = molly creëert een omgevingsvariabele die hond wordt genoemd en stelt de waarde in op molly. Voor toegang tot de omgevingsvariabele wordt het $ -symbool gebruikt. Met het $ -symbool wordt het echo $ dog-statement molly weergegeven, maar zonder het, geeft de echo dog-verklaring alleen het woord dog weer.

Ontsnappende Metacharacters

Soms wil je niet dat het metateken een speciale betekenis heeft. Wat als je een bestand hebt met de naam f.refox en een bestand met de naam firefox.

Bekijk nu het volgende commando:

ls | grep f.refox

Wat denk je dat is teruggekeerd? Zowel f.refox als firefox worden geretourneerd omdat ze allebei overeenkomen met het patroon.

Om f.refox alleen terug te sturen, zou je als volgt moeten ontsnappen om een ​​volledige stop te betekenen:

ls | grep f . refox

Gemeenschappelijke metatekens en hun betekenissen

Lijst met Linux-metatekens
KarakterBetekenis
.Elk personage
*Nul of meer tekens
^Overeenkomen met een regel of tekenreeks die begint met een patroon (d.w.z. gnome)
$Overeenkomen met een lijn of string die eindigt met een patroon (d.w.z. kabouter $)
Ontsnapt het volgende personage om zijn speciale betekenis te verwijderen
Vergelijk een van een lijst of bereik (d.w.z. "abc", "def" of 1..9
+Overeenkomen met een of meer voorgaande (d.w.z. grep a +)
?Pas nul of één daaraan voorafgaand aan