Skip to main content

Metacaratteri di Linux e loro significati

Week 9, continued (Giugno 2026)

Week 9, continued (Giugno 2026)
Anonim

Secondo Wikipedia, un metacarattere è un personaggio che ha un significato speciale, come un carat (^), un simbolo del dollaro ($) o un asterisco (*).

In termini di Linux, ci sono un buon numero di questi metacaratteri e i loro significati differiscono a seconda del comando o del programma in esecuzione.

La fermata completa come metacarattere (.)

L'umile punto fermo viene utilizzato per donare la posizione corrente quando si eseguono comandi come cd, find o sh ma all'interno di applicazioni come awk, grep e sed viene usato per indicare qualsiasi carattere.

Ad esempio, il seguente comando troverà tutti i file mp3 nella cartella corrente e in basso.

trova . -name * .mp3

Se esegui quel comando nella tua directory di lavoro (pwd), probabilmente otterrai i risultati restituiti, supponendo che tu mantenga i tuoi file mp3 in una cartella musicale all'interno della tua cartella home.

Ora guarda questo comando:

ps -ef | grep f..efox

Il comando ps elenca tutti i processi in esecuzione sul tuo computer. Il comando grep prende linee di input e cerca un pattern.

Quindi il comando ps -ef ottiene un elenco di processi in esecuzione e lo dà a grep che cerca qualsiasi riga nell'elenco che ha f..efox dove il. può significare qualsiasi personaggio

Se si esegue firefox, si otterrà una corrispondenza. Allo stesso modo, se si dispone di un programma chiamato fonefox o freefox in esecuzione verranno anche restituiti.

L'asterisco come un metacarattere (*)

L'asterisco è un metacarattere universalmente noto e viene utilizzato per indicare 0 o più durante la ricerca di un motivo.

Per esempio:

trova . -name * .mp3

* .Mp3 restituisce una corrispondenza per qualsiasi nome di file che termina con .mp3. Allo stesso modo, avrei potuto usare l'asterisco con il comando grep come mostrato di seguito:

ps -ef | grep F * efox

Vale la pena notare che questo differisce leggermente perché l'asterisco significa zero o più così oltre a trovare firefox, facefox e fonefox può trovare anche flutefox, ferretfox e anche solo fefox.

Il carato come un metacarattere (^)

Il carato (^) è usato per indicare l'inizio di una linea o di una stringa. Quindi come viene utilizzato?

Il comando ls è usato per elencare tutti i file in una cartella come segue:

ls

Se vuoi conoscere tutti i file in una cartella che inizia con una certa stringa come "gnome", allora puoi usare il carat per specificare quella stringa.

Per esempio:

ls | grep ^ gnome

Nota che questo elenca solo i file che iniziano con gnome. Se vuoi file con gnome nel nome del file ovunque, tornerai di nuovo all'asterisco.

Nell'esempio precedente, ls restituisce un elenco di nomi di file e passa tale elenco a grep che viene utilizzato per la corrispondenza del modello. grep sa che il simbolo carat significa trovare qualcosa che inizia con i personaggi che vengono dopo di esso e in questo caso, è uno gnomo.

Il simbolo del dollaro come un metacarattere ($)

Il simbolo del dollaro può avere più significati come un metacarattere all'interno di Linux.

Quando usato per abbinare i pattern, significa il contrario di carat e indica qualsiasi modello che termina con una particolare stringa.

Per esempio:

ls | grep png $

Questo elenca tutti i file che terminano con png.

Il simbolo del dollaro viene anche utilizzato per accedere alle variabili di ambiente all'interno della shell bash.

Per esempio:

esportazione dog = mollyecho $ dog

La linea export dog = molly crea una variabile di ambiente chiamata cane e imposta il suo valore su molly. Per accedere alla variabile di ambiente viene utilizzato il simbolo $. Con il simbolo $ l'istruzione echo $ dog mostra molly ma senza di essa, l'istruzione echo dog mostra solo la parola cane.

Fuggire dai metacaratteri

A volte non vuoi che il metacarattere abbia un significato speciale. Cosa succede se si ha un file chiamato f.refox e un file chiamato firefox.

Ora guarda il seguente comando:

ls | grep f.refox

Cosa pensi venga restituito? Sia f.refox che firefox vengono restituiti perché entrambi corrispondono al modello.

Per restituire solo f.refox, è necessario eseguire l'escape dell'intero stop per indicare effettivamente un punto fermo come segue:

ls | grep f . refox

Metacaratteri comuni e il loro significato

Elenco dei metacaratteri di Linux
PersonaggioSenso
.Qualsiasi personaggio
*Zero o più caratteri
^Abbina qualsiasi linea o stringa che inizia con un motivo (i.e ^ gnome)
$Abbina qualsiasi linea o stringa che termina con un motivo (i.e gnome $)
Escapes il carattere successivo per rimuovere il suo significato speciale
Abbina uno di una lista o intervallo (i.e "abc", "def" o 1..9
+Abbina uno o più precedenti (cioè grep a +)
?Corrisponde a zero o a uno precedente