201 votes

Recherche dans l'historique du Bash, partiel + flèche vers le haut

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

Il y a longtemps, j'avais un utilisateur sur un système debian, et un ami m'a mis en place une fonction pratique de recherche dans l'historique (je crois que j'utilisais tcsh à l'époque), où je pouvais taper le début d'une commande précédente, appuyer sur la flèche vers le haut, et cela faisait une recherche, basée sur la chaîne partielle.

Par exemple, si mon histoire est :

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

Et je tape . et appuyez sur la flèche du haut, ça me montre : ./script.pl arg1 . Appuyez à nouveau sur la touche et l'écran affiche ./script.pl etc.

Comme s'il s'agissait d'un grep sur .bash_history. Existe-t-il un moyen d'obtenir cette fonctionnalité ?

3voto

user27164 Points 131

La solution suivante combine et étend certaines des approches mentionnées ci-dessus : ajoutez les lignes suivantes à votre ~/.bash_aliases (pas besoin de ~/.inputrc ) afin d'obtenir le comportement suivant :

  1. se déplacer vers le haut/bas dans l'historique (uniquement les entrées ayant le même préfixe) en appuyant sur CTRL+UP et CTRL+DOWN. Cela peut coexister avec la fonctionnalité standard de déplacement vers le haut/bas dans l'historique complet via UP et DOWN uniquement.
  2. passer au mot suivant/précédent dans une ligne de commande en appuyant sur CTRL+RIGHT et CTRL+LEFT

    bind '"\e[1;5A":history-search-backward' bind '"\e[1;5B":history-search-forward' bind '"\e[1;5C":forward-word' bind '"\e[1;5D":backward-word'

Se reconnecter au Shell (ou exécuter source ./bash_aliases ) afin d'appliquer les changements.

2voto

ascendants Points 131

Il existe une alternative similaire à celle mentionnée par @lesmana ci-dessus, mais vous ne devez pas créer un nouveau fichier .inputrc.

Au lieu de cela, si vous avez les droits sudo, vous pouvez l'activer dans le fichier /etc/inputrc. Ce fichier contient divers paramètres de clavier, dont la fonction de recherche dans l'historique (pour la version 18.04 au moins). L'extrait de /etc/inputrc est le suivant :

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

Décommentez les deux dernières lignes en utilisant un éditeur de fichiers sudo (par exemple, $ sudo vim), et une nouvelle session de terminal disposera de la fonctionnalité de recherche dans l'historique (pour tous les utilisateurs). De cette façon, vous n'aurez pas à vous soucier de créer un fichier ~/.inputrc, ni à ajouter un fichier $include déclaration comme @Tulio Casagrande l'a mentionné dans les commentaires pour préserver vos entrées ctrl-flèche.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X