J'ai cherché, mais rien trouvé à ce sujet. Je cherche une fonctionnalité en bash, en utilisant un terminal.
Il y a bien longtemps, j'avais un utilisateur sur un système Debian et un ami m'a configuré avec une fonction de recherche historique pratique (je crois avoir utilisé tcsh à l'époque), où je taperais le début d'une commande précédente, en appuyant sur la flèche vers le haut, et il ferait 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 vers le haut, il me montrerait: ./script.pl arg1
. Appuyez de nouveau dessus pour afficher ./script.pl
, etc.
Cela ressemble beaucoup à un grep
sur .bash_history. Y at-il un moyen d'obtenir cette fonctionnalité?
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 me souviens pas de ce qui est en arrière et de ce en avant. Expérimentez avec. Peut-être que vous devez basculer en arrière et en avant.
Un peu d'information de base:
Bash utilise readline pour gérer l'invite. ~/.inputrc
est le fichier de configuration pour readline. Notez que cela prendra également effet dans les autres logiciels utilisant la bibliothèque readline, par exemple IPython .
Lisez le manuel bash pour plus d'informations sur readline. Là vous pouvez aussi trouver plus commandes reliées à l'historique .
Pour obtenir les codes d'échappement des touches de direction, vous pouvez effectuer les opérations suivantes:
cat
dans un terminal (juste cat
, aucun autre argument).^[[A
pour la flèche vers le haut et ^[[B
pour la flèche vers le bas.^[
par \e
.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 le meilleur moyen de le faire. Principalement si vous utilisez des systèmes de gestion de la configuration tels que chef, marionnette, etc.
Et la configuration du système reste intacte!
Ctrl + R vous donnera ce genre de fonctionnalité. Commencez à taper une commande partielle et elle viendra avec les anciennes avec lesquelles vous pourrez naviguer avec les flèches haut et bas. Plus d'infos: http://www.nuxified.org/blog/ctrl_r_in_the_bash_Shell
Pour compléter la réponse de lesmana concernant "~/.inputrc" que je devrais créer sous Trusty 14.04, vérifiez/ajoutez "~/.bashrc" (la première ligne existe déjà dans mon "~/.bashrc"):
shopt -s histappend
Prompt_COMMAND='history -a'
C'est déjà expliqué en français dans https://doc.ubuntu-fr.org/terminal?&#pour_completer_les_commandes_a_partir_de_l_historique .
Vous voudrez peut-être essayer https://github.com/dvorka/hstr , qui fournit un filtrage simple et multiligne de l’historique Bash basé sur une métrique (quand, combien de fois et la durée de commandes importe) - vous pouvez utiliser les touches fléchées pour naviguer facilement dans l'historique:
Il peut être facilement lié à Ctrl-r et/ou Ctrl-s
La solution suivante combine et étend certaines des approches mentionnées ci-dessus: ajoutez les lignes suivantes à votre fichier ~/.bash_aliases
(inutile de ~/.inputrc
) pour obtenir le comportement suivant:
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'
Reconnectez-vous au shell (ou exécutez source ./bash_aliases
) afin d'appliquer les modifications.