Ricerca cronologia di Bash, parziale + freccia su

121

Ho cercato, ma non ho trovato nulla su questo. Sto cercando una funzionalità in bash, usando un terminale.

Tornare indietro quando, ho avuto un utente su un sistema debian, e un amico mi ha impostato con una comoda funzione di ricerca della cronologia (credo di aver usato tcsh allora), dove avrei scritto l'inizio di un comando precedente, colpito -arrow, e farebbe una ricerca, basata sulla stringa parziale.

es. se la mia cronologia è:

./script.pl
./script.pl arg1
cat output
cat output | grep yada

E digito . , e premo freccia su, mi mostrerebbe: ./script.pl arg1 . Premerlo di nuovo e mostrerebbe ./script.pl , ecc.

Molto piacerebbe eseguire un grep su .bash_history. C'è un modo per ottenere questa funzionalità?

    
posta TLP 03.09.2011 - 14:11

4 risposte

170

Inserisci le seguenti righe nel ~/.inputrc :

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

Le righe che iniziano con # sono commenti. Non riesco a ricordare cosa sia indietro e in avanti. Sperimenta con esso. Forse devi passare indietro e avanti.

Un po 'di informazioni di base:

Bash sta usando readline per gestire il prompt. ~/.inputrc è il file di configurazione per readline. Nota che questo avrà effetto anche in altri software che utilizzano la libreria readline, ad esempio IPython .

Leggi il manuale di bash per ulteriori informazioni sulla lettura. Qui puoi anche trovare altri comandi di readline relativi alla cronologia .

Per ottenere i codici di escape per i tasti freccia, puoi fare quanto segue:

  1. Inizia cat in un terminale (solo cat , nessun ulteriore argomento).
  2. Digita i tasti sulla tastiera, otterrai cose come ^[[A per freccia su e ^[[B per freccia giù.
  3. Sostituisci ^[ con \e .
risposta data lesmana 03.09.2011 - 15:31
23

Crea un file denominato setup_readline.sh con la modalità 644 in /etc/profile.d/ con il seguente contenuto, accedi e verifica i tuoi tasti preferiti:

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

Penso che sia il modo migliore per farlo. Principalmente se usi sistemi di gestione della configurazione come chef, burattini, ecc.

E la configurazione del sistema è ancora inalterata!

    
risposta data user287613 02.06.2014 - 09:58
13

Ctrl + R ti darà questo tipo di funzionalità. Inizia a digitare un comando parziale e verrà visualizzato con quelli vecchi che è possibile navigare con le frecce su e giù. Maggiori informazioni: link

    
risposta data Andrew Moss 03.09.2011 - 14:17
4

Per completare la risposta di lesmana riguardante "~ / .inputrc" che dovrei creare sotto il mio Trusty 12.04, verifica / aggiungi "~ / .bashrc" (la prima riga esiste già nel mio "~ / .bashrc"):

shopt -s histappend  
PROMPT_COMMAND='history -a'  

È già spiegato in francese in link .

    
risposta data bcag2 14.10.2015 - 10:31

Leggi altre domande sui tag