terminal Quest’oggi voglio rinfrescarvi la memoria su tre indispensabili alleati nell’utilizzo della bash di linux. In ordine (ma non per importanza) vi presento: ? (punto interrogativo), * (asterisco) e [ ] (parentesi quadre).

Supponiamo di avere una cartella in cui sono presenti i seguenti files:

ciao1.txt

ciao2.txt

ciao3.txt

ciao4.txt

ciao5.txt

ciao6.txt

ciao7.txt

ciao8.txt

ciao9.tzt

ciao10.txt

ciao11.txt

ciao12.txt

ciao13.txt

ciao11.ogg

Vediamo adesso, sfruttando questa cartella ipotetica, cosa possiamo fare con i nostri fantastici tre.

Punto “ogniLettera” interrogativo.

Il primo simbolo che andremo ad analizzare è il punto interrogativo. Questo carattere viene interpretato (dalla shell) come “qui ci può stare qualsiasi carattere”. Lo so, il mio linguaggio tecnico non è dei migliori, ma un esempio sono sicuro cancellerà ogni dubbio.

Supponiamo di scrivere in un terminale

rm ciao?.txt

La nostra shell, adesso, rimuoverà i seguenti files ciao1.txt ciao2.txt ciao3.txt ciao4.txt ciao5.txt ciao6.txt ciao7.txt ciao9.txt ciao9.txt, ma lascerà stare gli altri, in quanto uno ha un estensione diversa (.ogg) rispetto a quella richiesta, e gli altri non rientrano nella richiesta, in quanto non hanno “un carattere qualsiasi tra ciao e .txt” ma due caratteri.

Allo stesso modo, scrivere

rm ciao1?.txt

eliminerà ciao11.txt ciao12.txt e ciao13.txt.

Asterisco, detto “tutto fa brodo”.

Il secondo carattere speciale è l’asterisco. Il significato di questo simbolo è “al mio posto va bene tutto, quanti e quali caratteri vuoi”. Per capirci, se scriviamo

rm ciao*.txt

verranno rimossi tutti i files tranne ciao11.ogg, per via dell’estensione differente. Se scriviamo

rm ciao1?.*

verranno rimossi ciao11.txt ciao12.txt ciao13.txt ciao11.ogg: infatti vengono rimossi tutti i files inizianti per ciao1 (poi, il carattere successivo può essere qualsiasi carattere per via del punto interrogativo) e di qualsiasi estensione (per via dell’asterisco). Se scrivessi

rm *.txt

verrebbero rimossi tutti i files con estensione .txt (quindi resterebbe solo ciao11.ogg). Nel caso in cui io scrivo

rm ciao*

verrebbe cancellato tutto (ma se ci fosse, ad esempio, un file chiamato pippo.txt quello resterebbe intoccato), mentre per eliminare l’intero contenuto della cartella corrente basta scrivere

rm *

La coppia quadrata.

Ultimo carattere speciale, ma non per importanza, che mi accingo a mostrare è la parentesi quadra. I caratteri tra parentesi quadra si comportano come una lista, che può essere definita per enumerazione o per intervallo.

Per capirci, [37] vuol dire “3 o 7”, quindi se in un terminale scrivo

rm ciao[37].txt

verranno eliminati i files ciao3.txt e ciao 7.txt. Se invece voglio definire la lista per intervallo, basta scrivere (ad esempio) [3-7] che indica tutti i numeri da 3 a sette (compresi), ragion per cui scrivendo in un terminale

rm ciao[3-7].txt

vedrò cancellare dalla cartella i files ciao3.txt, ciao4.txt, ciao5.txt, ciao6.txt e ciao7.txt.

Spero di avervi un pò rinfrescato la memoria dei rudimenti della bash linux. Sono piccoli dettagli che spesso vengono dimenticati, ma che in alcuni casi possono davvero semplificare la vita dell’utente pinguinese :)


| edit post

0 Reply to "I fantastici tre: “?”. “*” e “[ ]”"

  • Posta un commento

    Se ti è piaciuto l'articolo, o hai domande, lascia qui un commento! Se invece vuoi essere sempre aggiornato sulle novità del blog collegati ai Feed RSS.