jump to navigation

Shell: usare /etc/inputrc per alcuni trucchetti 04/10/06

Posted by felipe in Articoli, Guide e HowTo, Ergonomia, Facili, o quasi :), Felipizza la tua distro.
trackback

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’

Commenti»

1. kwisatz - 04/10/06

Troppo utile, grazie!

2. alexxx - 04/10/06

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

3. felipe - 04/10/06

verissimo :)

io addirittura ogni tanto premo TAB quando scrivo il mio nome ._.

4. Shell: alcune interessanti combinazioni di tasti « pollycoke :) - 04/10/06

[...] 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* :) [...]

5. Rendere operativa una Ubuntu secondo felipe « pollycoke :) - 12/10/06

[...] Esiste la comodità anche in shell! Usare /etc/inputrc per alcuni trucchetti ne è un esempio, così come un’altro esempio di fondamentale importanza per me è abilitare l’autocompletamento nella Bash. Ovviamente non tralascio di personalizzare la mia Bash tramite .bashrc, mi sa che scriverò qualcosa a riguardo. [...]

6. felipe - 11/11/06

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

7. Daniele - 21/01/07

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.

8. GS Defender - 21/01/07

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

9. GS Defender - 21/01/07

@Daniele: penso che le sequenze di escape siano anche in

man bash

(non ho uno UNIX sottomano per ora e non posso controllare :( )

10. Daniele - 21/01/07

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…

11. Daniele - 21/01/07

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

12. GS Defender - 21/01/07

Hai provato a fare

source /etc/profile

?

13. Daniele - 21/01/07

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.

14. gnazzino - 22/01/07

ottimo questo post, grazie a tutti voi
ho aggiornato il mio /etc/inputrc

15. Aumentare la “memoria” della bash per fare alcuni trucchetti… « pollycoke :) - 08/03/07

[...] particolare nel post “Shell: usare /etc/inputrc per alcuni trucchetti“, avevo segnalato come impostare il tasto PagUp per scorrere nello storico dei vostri comandi [...]

16. franco - 08/03/07

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

17. felipe - 08/03/07

@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!

18. Steno - 08/03/07

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

19. felipe - 08/03/07

@Steno:
Grazie, forse avresti trovato qui un posto migliore per segnalarli (ce ne sono già molti)
http://pollycoke.wordpress.com/2006/10/04/shell-alcune-interessanti-combinazioni-di-tasti/

Questo post è solo dedicato alla personalizzazione tramite /etc/inputrc :)

20. Steno - 08/03/07

@felipe

Opsss…

mi sono lasciato prendere da franco :)

21. franco - 08/03/07

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

22. felipe - 08/03/07

@franco:
Hehe, praticamente i due opposti :)

23. tkk - 08/03/07

Davanti alla e[ ci va la backslash.
Forse può essere utile a qualcuno.

Ciao

24. felipe - 08/03/07

@tkk:
Colpa di wordpress -.-

25. Anonimo - 09/03/07

Altre distribuzioni effettivamente hanno già /etc/inputrc configurato in questo modo :-\

26. Colorare la Bash e il prompt di linux « Xsquid Blog v2.5 - 24/05/07

[...] a tutti, prendendo spunto da il post che ha scritto pollycoke Shell: usare /etc/inputrc per alcuni trucchetti ho deciso di proporre una serie di script per abbellire la [...]