Recherche dans l'historique des commandes, partielle + flèche vers le haut

121

J'ai cherché, mais je n'ai rien trouvé à ce sujet. Je recherche une fonctionnalité en bash, en utilisant un terminal.

Il y a longtemps que j'avais un utilisateur sur un système Debian, et un ami m'a configuré avec une fonction de recherche d'historique (je crois avoir utilisé tcsh alors), où je saisissais le début d'une commande précédente. -arrow, et il ferait une recherche, basée sur la chaîne partielle.

E.g. si mon histoire est:

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

Et je tape . , et appuyez sur la flèche vers le haut, cela me montrerait: ./script.pl arg1 . Appuyez à nouveau dessus et cela affichera ./script.pl , etc.

Tout comme il ferait un grep sur .bash_history. Est-il possible d'obtenir cette fonctionnalité?

    
posée TLP 03.09.2011 - 14:11
la source

4 réponses

170

Mettez les lignes suivantes dans votre ~/.inputrc :

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

Les lignes commençant par # sont des commentaires. Je ne peux pas me souvenir de ce qui est en arrière et de ce qui est en avant. Expérimentez avec. Peut-être que vous devez basculer en arrière et en avant.

Quelques informations de fond:

Bash utilise readline pour gérer l'invite. ~/.inputrc est le fichier de configuration de readline. Notez que cela prendra également effet dans d'autres logiciels utilisant la bibliothèque readline, par exemple IPython .

Lisez le manuel de base pour plus d’informations sur readline. Vous y trouverez également d'autres commandes de readline liées à l'historique .

Pour obtenir les codes d'échappement des touches fléchées, vous pouvez effectuer les opérations suivantes:

  1. Démarrez cat dans un terminal (juste cat , pas d'autres arguments).
  2. Tapez les touches sur le clavier, vous obtiendrez des choses comme ^[[A pour la flèche vers le haut et ^[[B pour la flèche vers le bas.
  3. Remplacez ^[ par \e .
réponse donnée lesmana 03.09.2011 - 15:31
la source
23

Créez un fichier nommé setup_readline.sh avec le mode 644 dans /etc/profile.d/ avec le contenu suivant, connectez-vous et vérifiez vos clés préférées:

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

Je pense que c'est la meilleure façon de le faire. Surtout si vous utilisez des systèmes de gestion de configuration tels que chef, marionnette, etc.

Et la configuration du système reste intacte!

    
réponse donnée user287613 02.06.2014 - 09:58
la source
13

Ctrl + R vous donnera ce type de fonctionnalité. Commencez à taper une commande partielle et les anciennes que vous pouvez naviguer avec les flèches haut et bas. Plus d'infos: lien

    
réponse donnée Andrew Moss 03.09.2011 - 14:17
la source
4

Pour compléter la réponse de lesmana concernant "~ / .inputrc" que je devrais créer sous Trusty 12.04, vérifiez / ajoutez "~ / .bashrc" (la première ligne existe déjà dans mon "~ / .bashrc"):

shopt -s histappend  
PROMPT_COMMAND='history -a'  

Il est déjà expliqué en français dans lien .

    
réponse donnée bcag2 14.10.2015 - 10:31
la source

Lire d'autres questions sur les étiquettes