Existe-t-il un meilleur moyen de rechercher une commande dans mon fichier d’historique que grep? J'ai une idée de ce que la commande commence par, mais je ne sais pas à quel point elle est dans l'histoire.
update: était auparavant spécifique à zsh mais en raison du chevauchement des réponses, n'hésitez pas à répondre pour n'importe quel shell (ou mode (vi / emacs)), notez simplement s'il est spécifique.
la source
<kbd>Ctrl+R</kbd>
. source réponseLorsque vous utilisez Bash, tapez Control- Rpuis commencez à taper. En tapant Control- à Rplusieurs reprises après avoir saisi du texte, vous reviendrez dans les lignes de commande correspondantes.
la source
Je ne sais pas si cela aidera, mais j'aime bien utiliser ctrl- rpuis commencer à taper la commande. Il devrait passer en revue votre historique et vous présenter le premier match. Pour passer à travers les matchs vient de frapper ctrl- à rnouveau.
la source
Si vous ajoutez ce qui suit à
~/.inputrc
et redémarrez Bash, vous pouvez commencer à taper, puis utiliser Page Upet Page Downpour avancer et reculer dans l’historique des lignes commençant par le même préfixe que celui que vous venez de taper.
(Certains préféreront peut-être utiliser
\e[A
et\e[B
qui remplacera l'action normale Upet les Downactions au lieu de lier de nouvelles clés.)la source
Alt + Up
etAlt + Down
. En fonction de l'émulation du clavier du Emuler terminal utilise ces combinaisons peuvent être mises en correspondance soit\E[A
et\E[A
(par exemple KDE Konsole avec Linux Key Bindings) ou\E[1;3A
et\E[1;3B
(par exemple XFCE Terminal ou KDE Konsole avec X gratuit 4 Liaisons).L'invite interactive appelée par Ctrl- R, qui a déjà été mentionnée, est le moyen le plus pratique. De plus, il est courant de remapper Upet d' utiliser les Downtouches de direction pour rechercher dans l'historique un préfixe actuellement en ligne de commande, mais cela nécessite quelques modifications dans le
~/.inputrc
fichier .La solution classique et moins interactive consiste à utiliser l'extension de l'historique du shell. Dactylographie
exécutera la dernière commande qui commence par
foo
etexécutera la dernière commande qui contient
foo
. Vous trouverez plus d'informations sur le développement de l'historique dans le manuel de référence de Bash , en supposant que votre shell soit compatible ou avec Bash.la source
Si vous ajoutez
stty -ixon
à votre~/.bashrc
fichier alors Ctrl- sira dans la direction opposée à Ctrl- r.la source
C-s
à cette fin, mais mon terminal a été gelé ; il faut se méfier! (Eh bien, je n'en ai pas encore employé, jestty ixon
ne sais pas à quoi ça sert.)C-q
va "dégeler". CeC-s
sont les caractères de contrôle de flux logiciels habituels qui étaient autrefois utiles pour interrompre manuellement (mettre en pause) le flux de sortie lorsque des connexions série lentes étaient utilisées. La sortie est maintenant si rapide dans la plupart des cas que ce que vous voulez voir lorsque vous appuyez surC-s
a déjà défilé.stty -ixon
désactive le contrôle de flux logiciel.Si vous tapez,
!ls
bash examinera votre historique et exécutera la commande la plus récente commençant par "ls".la source
pourrait être spécifique à zsh. En cherchant cette réponse, j'ai trouvé
vi-history-search-backward
ce qui permet de chercher /en mode vi (dans lequel je n'avais pas mentionné que j'étais en), vous pouvez ensuite utiliser net Npour rechercher en avant et en arrière respectivement (après avoir appuyé sur enter).la source
Je suis surpris que cela n'ait pas été mentionné - mais vous pouvez sélectionner vi-mode dans bash ou ksh en procédant comme suit:
... ou en utilisant ceci comme contenu de
~/.inputrc
(pour GNU readline utilisé dans des programmes tels que bash):Ensuite, vous pouvez Escentrer en mode commande et krevenir en arrière dans l’historique et jaller de l’avant. Vous pouvez également rechercher en utilisant /pour rechercher normalement et ?inversement.
Si vous utilisez
~/.inputrc
, cela fonctionnera non seulement dans GNU bash, mais dans tout ce qui utilise GNU readline, tel que CLISP et éventuellement des programmes tels que le shell de commandes MySQL et le shell CPAN.la source
Pour basculer vers l'avant lorsque vous utilisez la recherche inversée (avec la commande Ctrl-R):
Ouvrez votre fichier .bashrc:
sudo gedit ~/.bashrc
ajouter cette ligne (la lettre "f" peut être remplacée par une autre non encore utilisée par le système)
source ~/.bashrc
ou. ~/.bashrc
MAINTENANT, VOUS POUVEZ AVANCER DANS L'HISTOIRE AVEC LE RACCOURCI: Ctrl + f
Travailler sur Ubuntu 18.04 LTS
la source
J'utilise les deux suivants la plupart du temps.
Mais notez bien que les deux recherchent des caractères de départ.
fc -e - <SPACE>
<first few char for your previous >
cela lancera la dernière commande correspondant à cette séquence.Je n'ai pas pu trouver quelque chose comme Ctrl+ Rdans Bash pour mon ksh et mon tcsh.
la source
set -o emacs
mode, au fait.Il y a un moyen d'utiliser Ctrl- Ravec tcsh . Ajoutez ce qui suit dans votre
~/.cshrc
:bindkey "^r" i-search-back
(c'est juste un signe de signe et la lettre r)C'est le plus grand gain de temps pour moi.
la source
réponse similaire à @ephemient, mais vous pouvez mettre dans votre .bashrc
et tapez une partie de la phrase, puis utilisez les flèches haut / bas pour parcourir les options les plus récentes qui correspondent. C'est le comportement par défaut de matlab.
Pour la plupart des gens, si vous souhaitez transférer vos paramètres vers un nouveau système, il est plus facile de vous rappeler de vous accrocher juste votre
~/.bashrc
alors que cela vous devez accrocher que~/.inputrc
la source
Oui, cela existe, du moins si vous utilisez zsh. Il suffit de commencer à taper la commande, puis d'appuyer sur M-p( ESC p) pour trouver les commandes précédentes qui correspondent à ce que vous avez tapé. Appuyez à nouveau pour trouver le prochain match.
la source