Achèvement de la ligne de commande à partir de l'historique des commandes


85

Donc, j'ai regardé l'histoire et Ctrl+ R, mais ce n'est pas ce que je pensais savoir. Est-il possible de taper le début d'une commande et de parcourir les correspondances de mon historique avec un raccourci bash?

# mysq(some shortcut key)

Donne moi:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p

Note latérale: Il y a '<kbd> Alt + Tab </ kbd>' pour les terminaux sans bureau.
— neverMind9

Réponses:


91

Appuyez sur Ctrl+ Rpour ouvrir la recherche d’historique inversé. Maintenant, commencez à taper votre commande, cela donnera la première correspondance. En appuyant à nouveau sur Ctrl+ R(et à nouveau), vous pouvez parcourir l'historique.

mysq(Ctrl+R)

Donnerait:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+ Rencore:

mysql -u ben.dauphinee -p

5
Merci. De plus, Echap mettra la commande sélectionnée sur votre ligne de commande sans s'exécuter, tandis que la commande Entrée exécutera la commande sélectionnée.
— Ben Dauphinee le

3
Je trouve que CTRL + E est meilleur pour cela que ESC, car échapper est difficile à atteindre mais je frappe déjà CTRL + R, donc E est là. Cela positionne également le curseur à la fin de la ligne, ce qui est pratique dans le cas où je voudrais changer quelque chose (comme un nom de fichier) que je trouve être un cas courant.
— Sorpigal

Malheureusement, ça ne marche pas sur Cygwin
— ATorras le

2
Sur mac, du moins, il semble mysq(CTRL+R)(CTRL+R)que les commandes commençant par «mysq» ne soient pas parcourues. Vous devez faire la (CTRL+R)mysq(CTRL+R)place
— BlueRaja - Danny Pflughoeft

62

Pour approfondir ce que Gilles a dit, j’ai le texte suivant .inputrcpour lier les flèches haut / bas à history-search-backwardet history-search-forward:

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

Il suffit de taper quelque chose (facultatif), puis d'appuyer sur les touches fléchées haut / bas pour parcourir l'historique des commandes commençant par ce que vous avez saisi.

Pour ce faire , au .bashrclieu de .inputrc, vous pouvez utiliser:

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

3
ceux qui lient appartiennent à ~ / .inputrc ... merci de soutenir ma paresse.
— Martin Zeitler

Il est à noter que le '\ e' est crucial, du moins pour les débutants bash. Taper Ctrl-V pour obtenir la frappe de votre commande ne raconte pas toute l'histoire. Par exemple, taper Ctrl-V Meta-P (c'est-à-dire Alt-P) renvoie ^ [p - pour obtenir le comportement souhaité, remplacez le "^ [" par "\ e".
— MrMas

D'accord avec @syslogic - placez les lignes dans .inputrc et supprimez les guillemets simples et liés.
— MrMas

copier-coller ceci dans .inputrc sur osx, je reçois: source ~ / .inputrc -bash: \ e [commande :: non trouvée -bash: \ e [B :: commande non trouvée -bash: \ eOA :: commande not found -bash: \ eOB :: commande not found
— Walrus the Cat le

1
Voir superuser.com/questions/241187/how-do-i-reload-inputrc . Vous ne pouvez pas source le fichier.
— Raychi

7

Vous pouvez également appuyer sur le PAGEUPbouton pour compléter automatiquement une commande. Il recherche essentiellement le bash_historyfichier.


Vous devez décommenter deux lignes /etc/inputrcou ajouter ces deux lignes à votre $HOME/.inputrcfichier: "\e[5~": history-search-backward "\e[6~": history-search-forward
— garlix

5

Vous pouvez utiliser les commandes readline history-search-backwardet history-search-forwardnaviguer entre les lignes de commande commençant par le préfixe que vous avez déjà saisi. Aucune de ces commandes n'est liée à des clés dans la configuration par défaut.

Zsh (zle) a des commandes similaires history-beginning-search-backwardet history-beginning-search-forwardn'est pas non plus lié aux touches par défaut. Il existe aussi history-search-backwardet history-search-forward, qui utilise le premier mot de la commande en cours comme préfixe pour effectuer une recherche, quelle que soit la position du curseur.


4

Si vous voulez un bon aperçu de commandes très similaires, vous pouvez obtenir une liste avec:

history|grep KEYSTRING

Ensuite, copiez et collez avec le bouton central de votre souris.

Rgds - Joe

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.