Comodamente shell: la Bash completion

felipe, 17 ottobre 2006 @ 1:25 - 20 commenti »

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.

→ Continua: “Comodamente shell: la Bash completion

Shell: alcune interessanti combinazioni di tasti

felipe, 4 ottobre 2006 @ 14:29 - 12 commenti »

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

felipe, 4 ottobre 2006 @ 11:30 - 26 commenti »

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
"ee[C": forward-word
"ee[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’