Configurare la freccia su per sfogliare i comandi con gli stessi caratteri iniziali anziché tutti i comandi precedenti


15

Sulla bashriga di comando, mi dà il comando precedente. Sulla riga di comando in numpyo matlab, quando scrivo alcuni caratteri, mi dà il comando precedentemente inserito che inizia con quei caratteri . Come posso abilitare esattamente questo comportamento in bash?

Sono a conoscenza di modi più avanzati di ricerca nella cronologia della riga di comando, ma a volte un modo semplice è più conveniente.

Risposte:


18

I comandi readline che stai cercando sono i history-search-*comandi:

history-search-forward
Cerca in avanti nella cronologia la stringa di caratteri tra l'inizio della riga corrente e la posizione corrente del cursore (il punto). Questa è una ricerca non incrementale.
history-search-backward
Cerca indietro nella cronologia la stringa di caratteri tra l'inizio della riga corrente e il punto. Questa è una ricerca non incrementale.

Vincolando questi nel tuo .inputrc, in questo modo:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

ti permetterà di inserire i primi caratteri di un comando, quindi usa i tasti Upe Downper muoverti solo attraverso quei comandi .bash_historyche iniziano con quella stringa.

Ad esempio, immettendo vie Upverrebbe portato al primo comando precedente che inizia con vi, come vim somefile. L'immissione Upporterebbe alla prossima istanza precedente e così via.

Puoi leggere di più su tutti i collegamenti readline qui: http://linux.about.com/library/cmd/blcmdl3_readline.htm


10

Aggiungi quanto segue al tuo .inputrc in ~ /, per fare ciò che hai suggerito:

"\e[B": history-search-forward
"\e[A": history-search-backward

Forse potresti anche voler aggiungere quanto segue al tuo .bash_profile:

export INPUTRC=~/.inputrc

Puoi spiegarci perché fare questa "esportazione"?
texnic

2

Prepara un "!" al comando che stai cercando. Se si desidera sostituire la funzionalità delle frecce su e giù, modificare il file inputrc (come suggerito dalle altre risposte) è la strada da percorrere.

Se "comando" è il comando che stai cercando, inserisci questo:

!comm

Dovresti ottenere "comando" come output.

Allo stesso modo, se si desidera trovare un comando che includa (ma potrebbe non iniziare con) parte del comando, premere ctrl + r e quindi digitare parte del comando.

Puoi anche digitare "tab" per completare automaticamente il testo inserito (inclusi anche i file). Ciò è utile se stai cercando un comando non presente nella cronologia (o non hai un file cronologico)

Puoi leggere di più sul "mastering" del file della cronologia qui: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

Questo è un possibile duplicato di /programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line


Le altre risposte rispondono più correttamente alla mia domanda, ma grazie per il puntatore a SO (vedi anche meta.stackexchange.com/q/4708/172266 ).
Gerrit,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.