Skip to content

Vad är Linux -metatecken och hur använder du dem?

19 de augusti de 2021
GettyImages 1140980831 af72b60b58244f90873faf925de37be8

En metakaraktär är varje tecken som har en speciell betydelse, till exempel en karat (^), dollarstecken ($) eller en asterisk

 

. Linux har ett stort antal av dessa metatecken, och deras betydelser skiljer sig åt beroende på vilket Linux -kommando eller program du använder.

Fullstoppet som en metakaraktär (.)The Full Stop (.

) anger den aktuella positionen när du kör kommandon som cd, find eller sh. I applikationer som awk, grep och sed är det ett jokertecken som anger ett visst antal av alla tecken. Som ett exempel hittar följande kommando alla MP3 -filer i den aktuella mappen och dess undermappar. hitta. -typ f -name ’*.mp3’

class = ”ql-syntax”> Om du kör det här kommandot i den nuvarande arbetskatalogen (pwd) ser du resultaten returnerade, förutsatt att du behåller MP3-filer i en musikmapp i din hemmapp. Titta nu på det här kommandot: ps -ef | grep f..efox

PS-kommandot listar alla processer som körs på din dator. Kommandot grep tar inmatningsrader och söker efter ett mönster.” class=”lazyload” id=”mntl-sc-block-image_1-0-17″ >

Linux -teckenKommandot ps -ef hämtar en lista över processer som körs. Röret (| ) metacharacter skickar den listan till kommandot grep, som söker efter vilken rad som helst i listanf..efox, där perioderna avser två av valfri karaktär. Om Firefox körs får du en matchning. På samma sätt, om ett program som heter fonefox eller freefox körs, returneras dessa också. Om du bara behöver söka efter ett enda tecken kan du använda? metakaraktär. Använda ? metakaraktär avser ett enda tecken antingen i början eller i slutet av mönstret.

Asterisken som en metakaraktärAsterisken (

*

) är en allmänt känd metakaraktär. Det betyder noll eller mer av något tecken när du söker efter ett mönster. Till exempel: ls *.flac Linux -asterisklista De

*.flac

del av kommandot returnerar en matchning för alla filnamn som slutar på .flac. På samma sätt kan du använda asterisken med kommandot grep i det sista avsnittet enligt följande: ps -ef | grep f*efox

Detta skiljer sig något eftersom asterisken betyder noll eller mer, så förutom att hitta firefox, facefox och fonefox hittar den också flutefox, ferretfox och fefox.

Linux -asterisk -karaktärKaraten som metakaraktär (^)Karaten (

^

) används för att markera början på en rad eller en sträng. Så hur används det? Kommandot ls listar filerna i en mapp enligt följande: ls -a

Om du vill lista filerna i en mapp som börjar med en viss sträng, till exempel gnome, kan karat användas för att ange den strängen. Till exempel: ls -a | grep ^gnome

Detta visar de filer som börjar med gnome. Om du vill ha filer som har gnome någonstans i filnamnet använder du asterisken.

 

Linux karat karaktär

I exemplet ovan returnerar ls -kommandot en lista med filnamn och skickar den listan till grep -kommandot, som används för mönstermatchning. Grep vet att karatsymbolen betyder att hitta allt som börjar med karaktärerna som kommer efter det, och i det här fallet är det gnome.Dollarsymbolen som en metakaraktär ($)Dollarsymbolen (

$
) har flera betydelser som en metakaraktär i Linux. När det används för att matcha mönster betyder det motsatsen till karat och betecknar alla mönster som slutar med en viss sträng. Till exempel: ls | grep png $
Detta listar alla filer som slutar med png. Dollarsymbolen används också för att komma åt miljövariabler inom bash -skalet. Till exempel: #! /bin/bash

exporthund = molly

eko $ hund Linux dollar tecken karaktär Linjen exporthund = molly skapar en miljövariabel som heter hundoch sätter dess värde molly . För att komma åt miljövariabeln, använd symbolen $. Med $ -symbolen, eko $ hund uttalande visar molly. Utan det,

 

ekohund

uttalande visar ordet hund. Undvikande metatecken () Ibland vill du inte att metakaraktären ska ha en speciell betydelse. Till exempel om en fil anropas f.refoxoch en annan fil kallas

firefox

. Titta nu på följande kommando: ls | grep f.refox

Vad tror du returneras? Både f.refox och firefox returneras eftersom båda matchar mönstret.

 

Linux Escape -karaktär[]För att bara återvända f.refox, undvik punkten för att faktiskt betyda ett punkt, enligt följande: ls | grep f . refox

Fästen som metakaraktär ([ ]) [abc]

Du kan använda parenteser (

) när du söker efter mönster. Parenteser anger specifika bokstäver som matchar var som helst i mönstret. Till exempel: ls | grep

Här visas alla filer som innehåller bokstäverna a, b eller c. Linux -fäste [a-h]Du kan använda parenteser i början, slutet eller i mitten av ett sökmönster. Om du vill söka efter en rad bokstäver använder du bindestreck (-). Till exempel, ls

 

*

returnerar filer som börjar med valfri bokstav från a till h.Accent Grave MetacharacterI exemplen ovan skickar rörmetacharacter resultatet av ett kommando (som ls -kommandot) till ett annat kommando (som grep -kommandot). Ett alternativt sätt att göra detta är att använda bakre citatet, även känt som accentgraven (
`

), för att infoga resultaten av ett kommando i ett annat kommando. För att göra detta, lagra resultatet av ett kommando i en variabel. Till exempel: kommando = `ls -lah`

echo $ -kommando

 

Linux backtick -karaktär

Exemplet är superkonstruerat, och du kommer sannolikt aldrig att göra något sådant, men du kan se hur det fungerar. Backtick -tecknet kör ett kommando och sparar resultatet. Detta kan vara användbart i skript, men det är mindre flexibelt än att använda röret för enkla kommandon. Vanliga metatecken och deras betydelser
Karaktär Menande
. Vilken karaktär som helst.
* Noll eller fler tecken.
^ Matcha alla rader eller strängar som börjar med ett mönster (till exempel ^gnome).
$ Matcha alla rader eller strängar som slutar med ett mönster (till exempel gnome $).
[] [”abc”, ”def”] Undgår nästa karaktär för att ta bort dess speciella betydelse. [1..9]Matcha en i en lista eller intervall (t.ex.
eller ).
+ Matcha en eller flera föregående (till exempel grep a+).