La caratteristica più potente della shell Bash di Linux è la sua capacità di aggirare i file e reindirizzare il loro input e output in modo efficiente. Linux utilizza caratteri o simboli speciali noti come metacaratteri che aggiungono un significato speciale a un comando della shell rispetto alla ricerca di file e alla connessione dei comandi.

I metacaratteri sono utili per elencare, rimuovere e copiare file su Linux. Tuttavia, la funzione di ciascun metacarattere varia a seconda del comando con cui lo stai utilizzando.

Questo articolo fornisce una guida approfondita sui diversi tipi di metacaratteri in Linux. Infine, spieghiamo come questi caratteri speciali aiutano a connettere ed espandere i comandi.

La shell Linux consente di salvare le sequenze di tasti durante la digitazione dei comandi utilizzando metacaratteri tra file o nomi di directory. Questi caratteri ti aiutano a fare riferimento a un gruppo di file oa una directory su cui elencare, spostare o eseguire altre attività.

Questi sono alcuni metacaratteri di corrispondenza dei file che la shell di Linux può interpretare:

instagram viewer
  • * (asterisco): Trova una o più occorrenze di un carattere
  • ? (Punto interrogativo): Corrisponde a un singolo carattere oa un'occorrenza di pattern
  • [ ] (Parentesi quadre): corrisponde a qualsiasi numero separato da trattino, simbolo o alfabeto specificato all'interno delle parentesi quadre

Un modo ideale per esercitarsi con i metacaratteri in Linux è creare una nuova cartella vuota all'interno di /tmp directory.

sudo mkdir /tmp/meta

Ora naviga nel /tmp/meta directory utilizzando il comando cd e crea nuovi file vuoti usando il tocco, come segue:

touch apple.txt cider.sh aceto.php cat.txt lemon.txt juice.sh pesce gatto.sh 

Utilizzare i seguenti comandi per testare "*" metacarattere e visualizzare gli output:

ls c*
Produzione:
pescegatto.sh cat.txt sidro.sh
ls c*h
Produzione:
pescegatto.sh sidro.sh
ls *r*
Produzione:
sidro.sh aceto.php
sudo rm *p*

Il suddetto comando cancellerà tutti i file contenenti la lettera "p" nel suo nome. È possibile verificare la modifica utilizzando il comando ls come segue:

ls
Produzione:
catfish.sh cat.txt cider.sh juice.sh lemon.txt

Ecco alcuni esempi di "?" metacarattere per la corrispondenza del modello:

è un?*
Produzione:
mela.txt
è c? T*
Produzione:
catfish.sh cat.txt

L'ultimo comando corrisponde a qualsiasi file che inizia con C e ha T come terza lettera (cat.txt, catfish.sh, ecc.).

Ora usa il [av]* opzione con il comando ls per elencare tutti i file che iniziano con entrambi un o v, come segue:

ls [av]*
Produzione:
apple.txt aceto.sh

È possibile modificare il comando precedente per elencare solo i file che terminano con la lettera T:

ls [ac]*[t]
Produzione:
apple.txt catfish.txt cat.txt

Allo stesso modo, puoi utilizzare le lettere separate dal trattino per definire intervalli ed elencare i file come segue:

ls [a-j]*
Produzione:
apple.txt catfish.sh cat.txt cider.sh juice.sh

Per una migliore comprensione del reindirizzamento in Bash, ogni processo in Linux ha descrittori di file, noti come input standard (stdin/0), uscita standard (normale/1) ed errore standard (stderr/2). Determinano l'origine dell'input del comando e decidono dove inviare l'output e i messaggi di errore.

I metacaratteri di reindirizzamento consentono di modificare queste azioni reindirizzando il flusso di I/O del contenuto. In genere, la shell di Linux legge l'input del comando dalla tastiera e scrive l'output sullo schermo. Il reindirizzamento dell'input consente al comando di leggere il contenuto da un file anziché da una tastiera, mentre il reindirizzamento dell'output salva l'output del comando in un file.

In altre parole, i metacaratteri di reindirizzamento dei file di Linux consentono di reindirizzare il contenuto a (>) e da (<) i file. I tre principali metacaratteri di reindirizzamento sono:

  1. <: indirizza il contenuto del file al comando. Ad esempio, l'output del comando per meno .bashrc equivale a meno < .bashrc.
  2. >: Dirige l'output del comando al file. Il comando ls /etc > lists.txt salva l'output nel file lists.txt.
  3. >>: Aggiunge l'output del comando al contenuto del file.

wc sta per conteggio parole e puoi usarlo per visualizzare la differenza tra il file prima e dopo averlo aggiunto all'output.

Imparentato: Comprensione dell'I/O standard su Linux

Il metacarattere di espansione delle parentesi consente di espandere i caratteri tra directory, nomi di file o altri argomenti della riga di comando. Ad esempio, puoi creare una nuova directory bretelle dentro il /tmp cartella e creare un insieme di file utilizzando il comando touch come segue:

sudo mkdir /tmp/brace; cd /tmp/parentesi
prova tattile{1,2,3,4,5}

Ora puoi verificare se touch ha creato i file o meno usando il comando ls.

ls
Produzione:
test1 test2 test3 test4 test5

È possibile specificare più elenchi per generare nomi di file in base alle combinazioni degli elementi nell'elenco. Per esempio:

tocca {mela, sidro, aceto}. {frutta, liquido, acido}
tocca {a, b, c}.{1,2,3}

L'ultimo comando creerà i seguenti file nella directory corrente:

Il primo comando utilizza due serie di parentesi graffe per associare i nomi dei file in ciascuna serie all'altra. Puoi anche scrivere l'ultimo comando come tocca {a..c}.{1..3} per specificare l'intervallo tra a e c e 1 e 3.

Oltre a creare file, puoi anche utilizzare l'espansione delle parentesi graffe per rimuovere o copiare file in altre posizioni.

Ecco una tabella di alcuni metacaratteri indispensabili per la connessione e l'espansione dei comandi con i loro nomi, descrizioni ed esempi per esercitarsi:

Nome Descrizione Esempio
Tubo (|) Collega l'output del comando come input all'altro comando. gatto /etc/passwd | radice grep
Punto e virgola (;) Consente l'esecuzione di comandi sequenziali, uno dopo l'altro. cd/ecc; ls -la; chmod +x /tmp/script.php
E commerciale (&) Esegue i processi o i comandi in background. trova / -perm -u=s -digita f &
Dollaro ($) Espande l'espressione aritmetica e la passa alla shell echo "i file totali in questa directory sono: $(ls | wc -l)"
Reindirizzamento nullo (2>) Indirizza i messaggi di errore standard al file /dev/null tuo_comando 2>/dev/null
Circonflessa (^) Corrisponde a qualsiasi modello che inizia con l'espressione seguita da ^ cd /etc/ssh; ls | grep^s

I metacaratteri Linux sono anche noti come caratteri jolly che aggiungono un significato speciale ai comandi e ne controllano il comportamento. I metacaratteri ottimizzano le prestazioni di lavoro di un utente in un ambiente produttivo mentre lavorano attorno a file/directory e collegano/espandono i comandi della shell di Linux.

Inoltre, i metacaratteri sono anche gli elementi costitutivi delle espressioni regolari. Inoltre, conoscere i metacaratteri e il loro utilizzo è un'abilità importante da avere se vuoi diventare un utente pro-Linux.

La guida per principianti alle espressioni regolari con Python

Vuoi velocizzare il tuo flusso di lavoro Python con pochi semplici comandi? Le espressioni regolari sono tue amiche.

Leggi Avanti

CondividereTwittaE-mail
Argomenti correlati
  • Linux
  • Linux elementare
  • Linux Bash Shell
Circa l'autore
Rumaisa Niazi (5 articoli pubblicati)

Rumaisa è una scrittrice freelance al MUO. Ha indossato molti cappelli, da matematica a appassionata di sicurezza informatica, e ora lavora come analista SOC. I suoi interessi includono la lettura e la scrittura di nuove tecnologie, distribuzioni Linux e tutto ciò che riguarda la sicurezza delle informazioni.

Altro da Rumaisa Niazi

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti