Experimentalia

Appunti raminghi

Tempo di shopTing

leave a comment »

Sono finite le vacanze, iniziati i saldi: è tempo di shopting. Ovviamente non vi sto incitando a spendere i pochi soldi che vi sono rimasti in chincaglierie e cianfrusaglie1.

Voglio semplicemente spendere qualche riga su un utile comando che permette di personalizzare la shell: shopt

Io uso shopt sostanzialmente per due cose:

  • Far correggere a bash automaticamente il nome delle directory che sbaglio a digitare e
  • gestire l’history in maniera incrementale (utile quando si tiene più di una finestra terminale aperta)

e di quelle vi parlerò in questo post. Chi volesse approfondire l’argomento potrà trovare l’elenco completo delle opzioni disponibili in fondo alla man page di bash. E’ un bel po’ in fondo, e seminascosta; ma se siete abbastanza curiosi si tratta di una lettura che vale la pena di fare.

Utilizzare shopt è molto semplice, basta conoscere il nome del parametro di configurazione da modificare,  vederne stampata una lista basta dare il comando shopt -p, ed usare shopt nella forma

shopt -s <parametro da configurare>

per attivare il parametro di configurazione o, per disattivarlo

shopt -u <parametro da configurare>

Una delle righe del mio .bashrc (l’habitat naturale di shopt) è

shopt -s cdspell

che indica a bash di correggere i nomi di directory sbagliati mentre si digita al terminale. Questo mi permette di bestemmiare meno e restare concentrato su quello che sto facendo.

In particolare bash si limita a provare ad accedere ad una directory e, in caso non ci riesca controlla che non ci siano directory con un nome simile a quello digitato ed in caso ne trovi qualcuna papabile sposta la current working directory di conseguenza.

Ad esempio, quando digito sulla tastiera sono solito invertire  tra di loro le lettere ‘r’ ed ‘e’, cdspell risolve il mio problema evidenziando l’errore e facendomi raggiungere la directory corretta.

Un’altra opzione configurabile tramite shopt è histappend. La gestione predefinita della history dei comandi non mi soddisfa perché sono solito lavorare con diversi terminali aperti contemporaneamente. Se siete soliti farlo anche voi saprete già di cosa sto parlando:  state lavorando in console  e volete aprire un’altro terminale per poter fare qualche controllo senza sporcare la finestra principale, magari siete nel mezzo di una connessione con ssh e dovete controllare dei settaggi locali. La nuova finestra, però, non eredita (in configurazione standard) la history dei comandi della nuova. Ancora peggio (posso convivere, male, con le finestre smemorate) se histappend non è attivato, l’history, che solitamente viene salvata all’uscita dalla shell, sovrascrive quella esistente e quindi, in caso si utilizzino più finestre solo i comandi impartiti in quella che verrà chiusa per ultima verranno ricordati.

Con due linee di configurazione in .bashrc possiamo fare in modo che le finestre condividano (o, meglio, facciano finta di condividere) la stessa history.

# accodiamo all’history invece di sovrascrivere l’history con quella associata alla shell
shopt -s histappend
# salviamo l’history dopo ogni comando
COMMAND_PROMPT=’history -a’

D’ora in avanti, l’history verrà scritta su disco ogni volta che viene eseguito un comando e le aggiunte verranno accodate all’history senza sovrascrivere le modifiche apportate da altre finestre di shell.

Ovviamente i portatili non vedrano di buon occhio l’ultima direttiva e quindi se vi interessa aumentare l’autonomia della batteria dovreste evitare l’ultima riga. Uso il condizionale perché in questo modo l’ordine dei diversi comandi che vi ritroverete nell’history sarà un po strano.

E questo (se siete riusciti a superare il mio italiano) è tutto.

e neanche sto cercando di convincervi a non farlo, ognuno è libero di spendere i propri risparmi come vuole.

Written by Eineki

gennaio 24, 2009 a 4:53 am

Pubblicato su linux, quick fix

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: