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’

26 pensieri su “Shell: usare /etc/inputrc per alcuni trucchetti

  1. Lo sai che differenza c’è tra la tastiera di uno che ha windows e quella di uno che ha linux? Il tasto TAB consumato :-)))

  2. Commento solo per segnalare che ho finalmente trovato il tempo e ho aggiunto il punto 4

    Adesso posso non solo cancellare intere parole indietro con Alt BackSpace (comportamento standard), ma anche in avanti con Alt Canc :-)

    Forse mi deciderò a provare Ctrl al posto di Alt, ma ormai sono abituato così :F

  3. Felipe scusa la domanda forse OT: come faccio a visualizzare l’ora nel terminale, prima del cursore? Ho spulciato tra le opzioni ma non ho trovato quella giusta…

    PS: Se non hai capito a cosa mi riferisco al fatto che nel tuo terminale leggo: 10:56 – > [Cursore]

    Grazie in anticipo.

  4. @Daniele: Si usa una particolare sequenza di escape, in questo caso \A. Una lista più completa la trovi (per esempio) qui.

    Per fare un prompt identico a quello di felipe dovrebbe bastare fare:

    export PS1=’\A \w >’

    Per renderlo default metti la riga in /etc/profile.

  5. Oh grazie. Non ci crederai ma ho capito perfettamente. =D
    Per ora sto giocando col comando per avere quello che desidero, poi proverò a impostarlo perchè compaia di default…

  6. Ecco, come immaginavo… ho editato il file /etc/profile in questo modo

    […]
    if [ “$PS1” ]; then
    if [ “$BASH” ]; then
    # PS1=’\u@\h:\w\$ ‘
    PS1=’\u @ \A \w > ‘
    […]

    Ma non funziona… Suggerimenti?
    Grazie di nuovo in ogni caso. ;)

  7. Cacchio, chiedo scusa sembra diventata una chat… :p

    Comunque per chi fosse interessato ho risolto: il file da editare è “/etc/bash.bashrc”, fatto quello funziona tutto. Infatti nel file /etc/profile c’è la stringa
    […]
    if [ -f /etc/bash.bashrc ]; then
    . /etc/bash.bashrc
    […]
    Grazie a GS Defender.

  8. Ma queste cose la bash le fa già di suo, senza stare a cambiare alcunché:

    1)
    Ctrl+a e vai all’inizio;
    Ctrl+e e vai alla fine

    2)
    Ctrl+r e inizi a scrivere il comando, e lui autocompleta in base alla tua history.

    3)
    Alt+f e vai a vanti di una parola
    Alt+b e va indietro di una parola

    4)
    Alt+d e cancelli la parola davanti al cursore
    Alt+Backspace e cancelli la parola dietro il cursore
    Ctrl+u e cancelli da dove dal cursore fino all’inizio del cursore
    Ctrl+k e cancelli da dove sei in avanti fino alla fine

    Quanto al prompt e alla possibilità di personalizzarlo, c’è questo vecchio e completissimo howto:

    http://www.pluto.it/files/ildp/HOWTO/Bash-Prompt-HOWTO/Bash-Prompt-HOWTO.html

  9. @franco:
    L’intero punto del post infatti è proprio quello di avere combinazioni di tasti simili a quelle usate in X e meno “oscure” o “incongruenti” delle attuali predefinite.

    Perché incongruenti?
    Alt+d e cancelli la parola davanti al cursore
    Alt+Backspace e cancelli la parola dietro il cursore

    Ormai sono anni che abbiamo tastiere decenti, il “contrario” di Backspace è percepito da tutti come Canc, e non D!

  10. Posso contribuire ? :)

    ctrl-a inizio linea
    ctrl-e fine linea

    ctrl-s blocco scorrimento video
    ctrl-q riattiva scorrimento video

    ctrl-z invia SIGSTOP al processo collegato alla tty
    ctrl-c TERM
    ctrl-r reverse serarh sulla linea ( premendo ctrl-r più volte cerca sulla history )
    ctrl-t inverte i caratteri accanto al cursore
    ctrl-y incolla la linea corrente
    ctrl-u cancella tutto a sx della linea e lo registra per ctrl-y
    ctrl-i tab
    ctrl-o invio
    ctrl-p cursore in su
    ctrl-d exit
    ctrl-f cursore dx
    ctrl-h backspace
    ctrl-j invio
    ctrl-l pulisce lo schermo
    ctrl-m invio
    ctrl-n cancella tutta la linea corrente
    ctrl-x memorizza/applica posizione corrente del cursore
    ctrl-b cursore sx

    alt-b una parola indietro
    alt-f una parola avanti
    alt-r lowercase di tutta la parola e annulla gli spazi bianchi se sono
    piu’ di uno alt-u uppercase fino alla fine della parola
    alt-l lowercase fino alla fine della parola
    alt-p attiva ricerca sullo storico comandi
    alt-c uppercase lettera sotto il cursore

    my 2 cents

  11. @felipe:

    > L’intero punto del post infatti è proprio quello di avere combinazioni di tasti
    > simili a quelle usate in X e meno “oscure” o “incongruenti” delle attuali
    > predefinite.

    Ah, ok.
    E’ che io sono venuto su con la shell, ho usato emacs per molto tempo e quindi mi trovo benissimo con quelle combinazioni, tanto che le replico sistematicamente anche sotto X.

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...