giovedì 18 novembre 2010

Storie di comandi

No, tranquilli. Non intendo raccontarvi una storiella. Il titolo dato all'articolo è un po ironico ma è davvero azzeccato al trucco che sto per raccontarvi. Al di la dell'uso che un utente ha con la finestra del terminale può sicuramente capitare di dover digitare un comando già scritto in passato, magari anche bello lungo. Non sempre la memoria, poi, ci aiuta a ricordare per filo e per segno tutte le opzioni e i paramatri passati al comando. Uno scenario che, viste le cose, ci vede proiettati alla ricerca nella rete del comando trovato proprio l'altro giorno! Ma perché non me lo sono scritto, sento dire a volte.
Nessun problema, il terminale lo fa già per noi! Davvero. Ogni comando che scriviamo nella finestra del terminale finisce in un file (nascosto) che solitamente risiede nella home dell'utente, si tratta del file .bash_history (il punto davanti al nome del file indica che si tratta di un file nascosto e che, pertanto, non figura mai negli elenchi forniti dal semplice comando ls). Potete verificarne l'esistenza se e solo se decidete di passare ad ls l'opzione -a (all, per la stampa di tutti i file).
Possiamo leggere il file in questione con less .bash_history o cat .bash_history e sfogliare la lista di comandi alla ricerca di quello che ci occorre. Non proprio elegante come soluzione ma comunque utile.
Anziché usare questi due comandi per leggere il file .bash_history vi suggerisco di usare il comando history che stampa sul video l'elenco dei comandi da noi digitati (senza passare al comando il nome del file). history, inoltre, stampa ad inizio riga, prima del comando, un numero sequenziale. Fra un po apprezzeremo il suo modo di stampare l'elenco dei comandi.


Anche con history continuiamo a ricevere un elenco di comandi più o meno lungo. Se siamo interessati a scorrere l'elenco pagina per pagina meglio allora usare una pipe e digitare il comando history | more. Oppure history | less, se vogliamo invece scorrere l'elenco verso il basso ed eventualmente risalire verso l'alto.


Se sfogliando l'elenco dei comandi individuate il comando che avevate dimenticato (o che per pigrizia non volete digitare) potete invocarne l'esecuzione attraverso il numero sequenziale che precede il comando, basta scrivere !NUMERO_COMANDO. Attenzione, inutile ricordare il numero che identifica il comando, quest'ultimo infatti cambia ad ogni nuovo comando scritto.
Se nemmeno questa soluzione vi soddisfa possiamo ancora fare di meglio! Possiamo dire al terminale di eseguire di nuovo uno degli ultimi comandi con !COMANDO. Ad esempio, il comando !tar dice alla shell di cercare nel file .bash_history l'ultimo comando tar presente nella lista e di eseguirlo nuovamente!

Nessun commento:

Posta un commento