2011-04-08

Ricerca di un comando precedente con bash - Ctrl-R

Bash è una delle shell testuali più diffuse, fa parte del progetto GNU ed è l'evoluzione della Bourne shell, dal quale deriva il nome di cui "bash" è l'acronimo: "Bourne Again SHell".
Oggi per bash voglio affrontare l'argomento della ricerca di un vecchio comando se ci si ricorda almeno una parte di esso e non si vuole riscrivere tutto.
Esiste la combinazione -R che attende che si inizi a digitare qualche carattere e viene visualizzato l'ultimo comando che contiene la serie di caratteri digitati, quando il comando visualizzato è quello desiderato si può battere per rieseguirlo senza correzioni oppure battendo la freccia verso sinistra o verso destra si entra nella modalità di correzione che permette di modificare il comando prima di sottometterlo.

Se dopo aver digitato alcuni caratteri il comando visualizzato non è quello cercato si può proseguire a digitare altri caratteri per proseguire la ricerca oppure si può digitare di nuovo -R per cercare a ritroso un altro comando che contenga i caratteri digitati.
Trovo molto comodo questo sistema di ripetizione dei comandi precedenti e lo preferisco alla ricerca con la freccia verso l'alto che ripropone uno ad uno i comandi precedenti, come dire... il comando, invece di cercarlo io, lo faccio cercare a bash.


Solo per fare un tuffo nel passato:
bash non permetteva di reperire un comando impartito precedentemente per modificarlo e risottometterlo, quindi se un comando era sbagliato andava riscritto tutto. In passato i terminali non permettevano, chiaramente, di fare cut-and-paste e quindi altre versioni di shell testuali, ad esempio csh e ksh, avevano introdotto la storia dei comandi eseguiti e la possibilità di rieseguirne uno magari correggendo qualche carattere o parola.
Per rieseguire il comando precedente andava digitata una coppia di punti esclamativi:
!!
Oppure con il comando
history
si poteva ottenere la lista di quelli tenuti in memoria dalla shell con l'indicazione del numero assegnato ad ognuno, e per rieseguire, ad esempio quello contrassegnato con il numero 45 andava digitato:
!45
Non starò qui a riportare esempi di come era possibile rieseguire, ad esempio, il quartultimo comando correggendo il nome del terzo di 5 file passato come parametro.

Nessun commento:

Posta un commento