(ricerca inversa) in Bash


26

Di solito finisco con CTRL+ rfor (reverse-i-search), tuttavia a volte passo il comando che stavo cercando; se lo faccio di nuovo (reverse-i-search), non lo trova più. Presumo che l'attuale puntatore alla cronologia dei comandi sia prima del comando che sto cercando.

Qualcuno sa come tornare al comando più recente nella cronologia senza dover fare clic su 1000 volte il down arrow?


1
La ricerca inversa è una caratteristica di bash (e delle librerie readline), quindi ho modificato un po 'il titolo e la domanda per riflettere ciò.
Doug Harris,

se si supera il comando desiderato, CTRL+SHIFT+Rtornare indietro
Ricky Robinson

Risposte:


7

C'è una domanda simile su stackoverflow.com .

La migliore risposta è quella di utilizzare Ctrl+Gper annullare la ricerca corrente.


Questa non è davvero la risposta migliore. La risposta migliore è quella data da Dennis Williamson: aggiungi il stty -ixontuo .bashrc(o in qualche altro file di configurazione corrispondente), quindi fai un Ctrl-Spasso avanti nella storia, allo stesso modo dei Ctrl-Gpassi indietro. Primo Ctrl-Stasto premuto dopo le Ctrl-Gmodifiche reverse-i-searcha i-search, il successivo Ctrl-Sfa il primo passo in avanti. Quindi ognuno Ctrl-Sfa un altro passo avanti.
nrz,

o se hai già terminato la ricerca (es. premendo esc o un tasto freccia), puoi
premere

38

In realtà, un'altra risposta a questa domanda offre un'opzione migliore.

Nel tuo ~/.bashrcaggiungere la seguente riga:

stty -ixon

Quindi puoi usare Ctrl- sper avanzare nella cronologia nello stesso modo in cui useresti Ctrl- rper fare un passo indietro.

Funzionerà anche per avviare una nuova ricerca in avanti (chiamata i-searchal contrario di reverse-i-search) durante la navigazione nella cronologia. Supponiamo che tu lo faccia Ctrl- re digita il testo di un comando vicino alla tua destinazione, quindi premi la freccia su più volte superando quello che stavi davvero cercando (o cambi idea). Ora premi Ctrl- se digita alcuni caratteri di quella riga. Zoooom! Direttamente ad esso.


2
qual è l'implicazione di stty -ixon? disabilita qualcosa che potrebbe essere necessario in altre situazioni?
Gregory Pakosz,

7
@GregoryPakosz: disabilita XON / XOFF ( controllo del flusso del software ), che è inutile dalla tastiera ora che stiamo comunicando a una velocità leggermente superiore a 300 baud.
In pausa fino a nuovo avviso.

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.