Menu Chiudi

Comodamente shell: la Bash completion

di felipe

Per la serie “Rendere operativa una Ubuntu secondo felipe“, volevo da tempo scrivere di questa fantastica caratteristica della Bash che si chiama “programmable bash completion” (da adesso in poi: BC) o “autocompletamento programmabile della bash” :-)

Sono d’accordo: in italiano suona un po’ una merda, ma adesso vi spiego cosa è, come si attiva e come non potrete più farne a meno.

Shell: alcune interessanti combinazioni di tasti

di felipe

Beh visto che ci sono, dopo “Shell: usare /etc/inputrc per alcuni trucchetti” metto per iscritto anche alcune combinazioni di tasti che dovrebbero funzionare con tutte le versioni recenti della Bash. Alcune sono molto utili e altre sono *indispensabili* :)

Si parte:

  • Shift + PagUp/PagDn : per andare una schermata indietro/avanti nell’output della shell
  • Shift + frecciaSu/Giù : per andare una riga indietro/avanti nell’output della shell, funziona solo con alcuni emulatori di terminale (es: konsole sì, gnome-terminal no)
  • Ctrl + L : per ripulire lo schermo, equivale al comando “clear”, non cancella comunque le informazioni, che si possono reperire con le due combinazioni precedenti
  • Ctrl + U : per cancellare la riga che si sta scrivendo
  • Ctrl + K : per cancellare, nella riga che si sta scrivendo, tutto ciò che sta a destra del cursore
  • Ctrl + C : classico dei classici, per ammazzare un processo (che non sia stato avviato in background)
  • Ctrl + S : per bloccare ogni output visivo, ma la shell riceve ancora input. ad esempio se siete bravi potete digitare un comando segreto tipo
    rm -rf /Dati/Foto/Personali/Amichette/DeBBorah_porno_in_macchina && exit
    senza che nessuno vi veda :D poi leggete oltre:
  • Ctrl + Q : per sboccare una shell dopo aver dato il comando precedente, continuando l’esempio di sopra: verrebbe rimossa la directory e verrebbe chiusa la shell. Occultamento prove riuscito :D
  • Ctrl + D : per uscire dalla shell, equivale a scrivere “exit” o “logout”

Poi ci sono delle combinazioni un po’ più strambe che voglio descrivere separatamente:

  • Alt + numero (n) : serve a ripetere n volte un carattere. ad esempio se tengo premuto Alt mentre scrivo 123, e poi una volta rilasciato Alt scrivo “s”, mi verrà automaticamente ripetuto s 123 volte. mai capito a che serva sta cosa :D
  • Ctrl + R : questo è più utile. una volta premuto basta scrivere “pezzi” di un comando, e la bash cercherà all’interno della history. E’ simile al trucchetto di PagUp/Dn che abbiamo visto in “Shell: usare /etc/inputrc per alcuni trucchetti“, ma è più potente perché ricerca non solo l’inizio di una riga, ma anche in mezzo. Ad esempio se volessi vedere tutti i comandi in cui c’è scritta la parola compiz mi basterebbe fare Ctrl+R, scrivere compiz e continuare a dare Ctrl+R per visualizzare i comandi dati in passato. visto che ci sto prendendo la mano ecco un altro screencast

sdt.gif

Uhm… se me ne vengono in mente altri li aggiungo, oppure meglio: facciamo la gara a chi ne sa di più? :)

Shell: usare /etc/inputrc per alcuni trucchetti

di felipe

11/11/06: aggiunto il punto 4, wow finalmente!

Mi decido a scrivere questo MicroHowto dopo tanto tempo, non è niente di spettacolare ma è una di quelle cose che possono fare la differenza, e vi assicuro che una volta abituati a queste piccole comodità non si torna indietro! :)

Non molti sanno che readline, la libreria che legge gli input, può essere in qualche modo configurata, e questo generalmente significa la possibilità di risparmiarci i polpastrelli :D

Generalmente /etc/inputrc esiste già in molte distro, in alcuni casi è già configurato per la massima comodità, ma per la maggior parte c’è un bel po’ da migliorare. Ecco le righe che io ritengo indispensabili, potete fare copia/incolla nel vostro inputrc:

# 1) Tasti Home/End per
# spostarsi all'inizio/fine della riga
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# 2) PgUp e PgDn per
# l'autocompletamento in base alla history
"\e[5~": history-search-backward
"\e[6~": history-search-forward
# 3) Ctrl + frecce destra/sinistra per
# spostarsi da una parola all'altra
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
# 4) Alt + Canc per
# eliminare intere parole davanti al cursore
"\e[3;3~": kill-word

NB: Davanti alla “e” va sempre un backslash (es: “\e[1~”), purtroppo wordpress mi odia e le elimina -.- (grazie tkk!).

So già che volete spiegazioni sul secondo punto :) eccole:

C’è qualche comando noioso che eseguite “spesso ma non troppo”, oppure comandi kilometrici abbastanza simili che volete ricordare? Bene, basta scrivere le prime lettere del comando e successivamente premere su Pag.Su per scorrere nella history. La shell vi mostrerà solo i comandi simili :) Guardate questo screencast:

inputrc.gif

Per approfondimenti: il manuale readline(3readline) e`info rluserman’

Vai alla barra degli strumenti