Linux-metategn og deres betydning
Et metategn er ethvert tegn som har en spesiell betydning, for eksempel en karat (^), dollartegn ($) eller en stjerne (*). Linux har en god del av disse metategnene, og deres betydninger varierer avhengig av hvilke Linux kommando eller programmet du bruker.
Punktum som metakarakter (.)
Punktum (.) indikerer gjeldende posisjon når du kjører kommandoer som f.eks cd, finne, eller sh. I applikasjoner som f.eks awk, grep, og sed, det er et jokertegn som angir et spesifikt antall av et hvilket som helst tegn.
Som et eksempel finner følgende kommando alle MP3-filer i gjeldende mappe og dens undermapper.
finne. -type f -navn '*.mp3'
Hvis du kjører den kommandoen i den nåværende arbeidskatalogen (pwd), vil du se resultater returnert, forutsatt at du beholder MP3-filer i en musikkmappe i hjemmemappen.
Se nå på denne kommandoen:
ps -ef | grep f..efox
ps-kommandoen viser alle de kjørende prosessene på datamaskinen din. grep-kommandoen tar linjer med input og søker etter et mønster.

Kommandoen ps -ef henter en liste over kjørende prosesser. Røret (
Hvis Firefox kjører, får du en match. På samme måte, hvis et program kalt fonefox eller freefox kjører, returneres disse også.
Hvis du bare trenger å søke etter et enkelt tegn, i stedet for å bruke punktum (.) metategn, bruk? metakarakter. Bruker? metategn refererer til et enkelt tegn enten på begynnelsen eller slutten av mønsteret.
Stjernen som metategn (*)
Stjernen (*) er en universelt kjent metakarakter. Det betyr null eller mer av alle tegn når du søker etter et mønster. For eksempel:
ls *.flac

De *.flac del av kommandoen returnerer et samsvar for alle filnavn som ender på .flac. På samme måte kan du bruke stjernen med grep-kommandoen i den siste delen som følger:
ps -ef | grep f*efox
Dette skiller seg litt fordi stjernen betyr null eller mer, så i tillegg til å finne firefox, facefox og fonefox, finner den også flutefox, ferretfox og fefox.

Karaten som metakarakter (^)
Karaten (^) brukes til å angi starten på en linje eller en streng. Så hvordan brukes det?
Kommandoen ls viser filene i en mappe, som følger:
ls -a
Hvis du vil liste filene i en mappe som begynner med en bestemt streng, for eksempel gnome, kan karaten brukes til å spesifisere den strengen. For eksempel:
ls -a | grep ^gnome
Dette viser filene som starter med gnome. Hvis du vil ha filer som har gnome hvor som helst i filnavnet, bruk stjernen.

I eksemplet ovenfor returnerer ls-kommandoen en liste over filnavn og sender den listen til grep-kommandoen, som brukes til mønstertilpasning. Grep vet at karatsymbolet betyr å finne alt som begynner med tegnene som kommer etter det, og i dette tilfellet er det gnome.
Dollarsymbolet som et metategn ($)
Dollarsymbolet ($) har flere betydninger som et metategn i Linux. Når det brukes til å matche mønstre, betyr det det motsatte av karat og betegner ethvert mønster som ender med en bestemt streng. For eksempel:
ls | grep png$
Dette viser alle filer som slutter med png.
Dollarsymbolet brukes også for å få tilgang til miljøvariabler i bash-skallet. For eksempel:
#! /bin/bash
eksport hund=molly
ekko $hund

Køen eksport hund=molly oppretter en miljøvariabel kalt hund og setter verdien molly. For å få tilgang til miljøvariabelen, bruk $-symbolet. Med $-symbolet vil ekko $hund uttalelsen viser molly. Uten den ekko hund uttalelse viser ordet hund.
Escapende metategn (\\)
Noen ganger vil man ikke at metakarakteren skal ha en spesiell betydning. For eksempel hvis en fil kalles f.refox og en annen fil kalles firefox.
Se nå på følgende kommando:
ls | grep f.refox
Hva tror du er returnert? Både f.refox og firefox returneres fordi begge samsvarer med mønsteret.

For bare å returnere f.refox, unnslipp punktum for å faktisk bety punktum, som følger:
ls | grep f\\.refox
Klammer som et metategn ([])
Du kan bruke parentes ([ ]) når du søker etter mønstre. Klammer angir spesifikke bokstaver for å matche hvor som helst i mønsteret. For eksempel:
ls | grep [abc]
Dette viser alle filer som inneholder bokstavene a, b eller c.

Du kan bruke parentes i begynnelsen, slutten eller midt i et søkemønster.
For å søke etter en rekke bokstaver, bruk bindestrek (-). For eksempel, ls [a-h]* returnerer filer som starter med en hvilken som helst bokstav fra a til h.
Aksentgravens metakarakter
I eksemplene ovenfor sender pipe-metakarakteren resultatene av én kommando (som ls-kommandoen) til en annen kommando (som grep-kommandoen).
En alternativ måte å gjøre dette på er å bruke baksitatet, også kjent som aksentgraven (`), for å sette inn resultatene av en kommando i en annen kommando. For å gjøre dette, lagre resultatet av én kommando i en variabel. For eksempel:
kommando=`ls -lah`
ekko $kommando

Eksemplet er superkonstruert, og du vil sannsynligvis aldri gjøre noe sånt, men du kan se hvordan det fungerer. Backtick-tegnet kjører en kommando og lagrer resultatet. Dette kan være nyttig i skripting, men det er mindre fleksibelt enn å bruke pipen til enkle kommandoer.
Vanlige metakarakterer og deres betydninger
Karakter | Betydning |
. | Hvilken som helst karakter. |
* | Null eller flere tegn. |
^ | Match en hvilken som helst linje eller streng som starter med et mønster (for eksempel ^gnome). |
$ | Match en hvilken som helst linje eller streng som slutter med et mønster (for eksempel gnome$). |
\ | Escapes neste karakter for å fjerne dens spesielle betydning. |
[] | Match en av en liste eller et område (for eksempel ["abc", "def"] eller [1..9]). |
+ | Match en eller flere foregående (for eksempel grep a+). |
? | Match null eller én foran. |