Come rendere la cronologia bash sensibile ai prefissi?


8

Come posso fare premendo su / giù su bash per richiamare l'ultimo comando che è iniziato con il prefisso che ho già inserito?

Per esempio

$ ls foo
$ echo hello
$ ls <UP_ARROW>

Fare clic su SU dopo aver inserito ls dovrebbe far apparire "ls foo" e non "echo hello"

Risposte:


11

Alcune possibilità:

  1. Associa i history-search-backward/forwardcomandi. Credo che questo sia il più vicino a quello che vuoi:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
    
  2. Usa la cronologia i-search. Questo è probabilmente legato a ^R. Su una riga vuota, ^Rls<space>ti riporterà a ls foo, quindi di ^Rnuovo ti porterà all'ultimo lscomando (o altro comando con un punto lsdella riga) prima ls foo, ecc ...

  3. Associare il magic-spacecomando: bind SPACE:magic-space. Quindi digita (su una riga vuota) !ls<space>e readline eseguirà automaticamente la sostituzione della cronologia, lasciandoti con ls foo.


1
Grazie. Ho preso l'opzione 1 e, con l'aiuto di questa vecchia risposta, ho capito che \ e [B legherà la freccia giù.
ripper234,

Ho modificato la tua domanda per includere history-search-forward (beh, ho inviato una modifica alla coda di modifica)
ripper234
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.