[Shell Programming] Wild cards: cosa sono e come si utilizzano

postato in: Articoli, Guida | 0

Episodio3

Come promesso nella scorsa puntata,  oggi ci occupiamo delle wild cards. Le wild cards sono tutti quei caratteri che permettono fare compiere determinate azioni, soprattutto di ricerca di corrispondenza, senza sapere il nome corretto di ciò che ci interessa.


Oppure per ricercare determinati tipi di occorrenze nei nomi dei file.
Ma quali sono queste benedette wild cards?
In questo articolo ci occuperemo dell'utilizzo di:

  • *
  • ?
  • [ ]

Il corretto utilizzo di questi tre (quattro) simboli ci permette di utilizzare molto più velocemente, e in modo molto più intelligente, la shell di Linux.

 

 

WILD CARD - *
Forse è la wild cards più conosciuta di tutti. In ogni caso per chi non lo sapesse, essa comunica al programma di sostituire al suo posto qualunque stringa  disposizione.
Facciamo un esempio. Mettiamo il caso che si voglia installare una particolare versione di un programma con l'ausilio di yum. Per visualizzare tutti pacchetti che abbiano quel nome saremo tentati a fare seguire il nome con il simbolo *:

sudo yum install mioprog*


Se seguiamo questa strada il terminale ci restituisce un errore. Allora come fare?
Semplicemente il carattere da inserire è *.
Viceversa se prendiamo come esempio il comando ls, deputato a stampare a video i singoli file presenti nella cartella, e inseriamo * la prende male. Questo perché nei sistemi Linux il \ (backslash) è il responsabile della separazione gerarchica delle cartelle nei path (anche detti indirizzi).

Qui sorge una domanda: come distinguo i due casi?

Semplice. In tutti i comandi che come parametri prendono (o possono prendere) degli indirizzi, va utilizzato l'asterisco semplice. In tutti gli altri casi, in generale, si utilizza il *.

Esempio fondamentale:
Prendiamo il caso del comando ls. Mettiamo il caso di voler elencare solo i file che iniziano per a. Per farlo diamo:

ls a*

Invece se dovessimo elencare tutti i file che abbiano estensione .c allora daremo:

ls *.c

Da ciò capiamo che la card * può essere messa in ogni punto della stringa.

 

 

WILD CARD - ?
Questa wild card è poco nota ai più, anche se non è che un "sottocaso" del precendente.
Il carattere punto interrogativo è responsabile della corrispondenza di un singolo carattere.

Esempio fondamentale:
Continuiamo ad utilizzare ls, se digitiamo:

ls ?

Il terminale restituirà tutti i file con il nome lungo un carattere. La vera utilità, ovviamente non sta qua. Serve nei casi in cui ci serve uno o pochi più caratteri di gioco nella stringa del nome.
Anche essa può essere messa in ogni punto del nome da cercare.

 

WILD CARD - [ ]
Se la precedente non era nota, questa card è praticamente sconosciuta.
Il suo utilizzo consta nel permettere di inserire un range di caratteri da elencare. Se il suddetto range è troppo lungo è possibile inserire un - (meno) tra gli estremi dell'intervallo, evitando così di elencare uno a uno i caratteri necessari.

Esempio fondamentale:
Molto utile, in tutti quei casi in cui ci serve elencare tutti i file che iniziano o con questa o con quella lettera. Per esempio, per elencare tutti i file che iniziano per a, b, c e d:

ls [abcd]*

Lo stesso risultato lo avremmo ottenuto con:

ls [a-d]*

Molto spesso però si deve operare con tutti i file eccetto qualcuno. Allora la shell ci viene in aiuto dandoci il simbolo ! (not). Quindi:

ls [!a-d]*

stamperà tutti i file che non iniziano con per a, b, c e d.

 

Link alle altre puntate:

 

Fonti:
- Immagini di Joel Garia;

Dottore in Informatica. Appassionato di computer fin dal primo PC Olivetti con Windows 95 e la bellezza di 8 MB di RAM.
Utilizzatore Linux da 5 anni, credo profondamente nella filosofia open source.
Dopo tante distro provate sul mio fidato Toshiba, uso Fedora per lo studio e il divertimento.

Lascia un commento