Comment rendre sensible au préfixe de l'historique bash?


8

Comment puis-je faire en appuyant sur haut / bas sur bash afficher la dernière commande qui a commencé avec le préfixe que j'ai déjà entré?

Par exemple

$ ls foo
$ echo hello
$ ls <UP_ARROW>

Cliquer sur UP après avoir entré ls devrait faire apparaître "ls foo" et non "echo hello"

Réponses:


11

Quelques possibilités:

  1. Liez les history-search-backward/forwardcommandes. Je crois que c'est le plus proche de ce que vous voulez:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
  2. Utilisez l'historique de recherche. C'est probablement lié à ^R. Sur une ligne vide, ^Rls<space>vous ramènera à ls foo, puis vous ramènera à ^Rla dernière lscommande (ou à une autre commande avec lsquelque part dans la ligne) avant ls foo, etc ...

  3. Lier la magic-spacecommande: bind SPACE:magic-space. Tapez ensuite (sur une ligne vide) !ls<space>, et readline effectuera automatiquement la substitution d'historique, vous laissant avec ls foo.


1
Merci. J'ai pris l'option 1, et avec l'aide de cette ancienne réponse, j'ai réalisé que \ e [B lierait la flèche vers le bas.
ripper234

J'ai modifié votre question pour inclure l'historique de recherche (bien, j'ai soumis une modification à la file d'attente de modification)
ripper234
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.