80 votes

En utilisant bash histoire pour obtenir une commande précédente, copiez-le, puis ' exécuter ' il, mais avec la commande commenté

Juste une question pour améliorer mon bash compétences. J'ai toujours ceci:

$ history | grep some_long_command

...
...
123 some_long_command1.........
124 some_long_command2.........
...

Je peux alors lancer la commande la commande que j'ai trouvé en faisant:

!123

Cependant, j'ai souvent envie de le faire:

some_long_command1foobar

I. e. modification de la commande avant de me lancer. Pouvez-vous utiliser bash pour exécuter cette commande à la place:

#some_long_command1

donc il s'est fait remarquer.

Alors je n'ai pas à utiliser ma souris pour mettre en surbrillance la commande, le modifier puis de l'exécuter (je peux utiliser le clavier le plus rapide).

Je suppose que je pourrais écrire un script pour le faire, mais il y a peut-être déjà des fonctionnalités intégrées dans quelque part....?

Je vous remercie.

145voto

Miquel Points 7036

Je dirais plutôt que d’utiliser la commande history, vous utilisez `` et commencez à taper cette commande. Lorsque vous appuyez sur une touche fléchée, comme si pour aller à le modifier, il tombera en reconnaissance de la saisie semi-automatique et permettra de vous éditer avant la course.

Mise à jour : aussi, si vous voulez faire défiler les différentes commandes qui contiennent la chaîne que vous venez de taper, garder en appuyant``

63voto

joeschmidt45 Points 800

En fait, vous pouvez simplement ajouter « : p » à la commande pour obtenir que la commande précédente sans réellement en l’exécutant :

Par exemple :

ls-la

!! : p

mettra « ls-la » tant que la commande précédente sans courir et vous pouvez appuyez simplement sur place pour le modifier

Vous pouvez également faire

! 123:p

mettre la commande 123ème comme votre commande précédente.

20voto

Prince John Wesley Points 22418

Vous pouvez également essayer d' fc commande pour modifier la commande dans l'histoire.

WIKI dit,

fc est un programme standard sous Unix que des listes ou des modifications et des reexecutes, les commandes entrées précédemment à un shell interactif. fc est un construit-dans commande dans le bash shell; aider le fc permettra d'afficher les informations d'utilisation.


Hormis l' inverse de recherche incrémentale(Ctrl+R), nous avons encore plus de bash raccourcis:

D' man bash:

précédente-l'histoire (C-p)
 Récupérer la commande précédente de la liste de l'historique, de revenir dans la liste. 
la prochaine histoire (C-n)
 Récupérer la commande suivante à partir de la liste de l'historique, aller de l'avant dans la liste. 
début de l'histoire (M-&lt)
 Passer à la première ligne dans l'histoire. 
fin de l'histoire (M->)
 Aller à la fin de l'entrée de l'histoire, c'est à dire, la ligne en cours de saisie. 
inverse de recherche-histoire (C-r)
 Recherche en arrière en commençant à la ligne actuelle et se déplaçant vers le haut à travers l'histoire comme nécessaire. C'est une recherche incrémentale. 
l'avant-recherche-histoire (C-s)
 Recherche avant de commencer à la ligne actuelle et se déplaçant vers le bas à travers l'histoire comme nécessaire. C'est une recherche incrémentale. 
non incrémentale-inverse-la recherche-l'histoire (M-p)
 Recherche en arrière à travers l'histoire de départ à la ligne actuelle à l'aide d'un non-incrémentale rechercher une chaîne de caractères fournie par l'utilisateur. 
non incrémentale-avant-la recherche-l'histoire (M-n)
 Recherche vers l'avant à travers l'histoire à l'aide d'un non-incrémentale rechercher une chaîne de caractères fournie par l'utilisateur.
yank-nth-arg (M-C-y)
 Insérez le premier argument de la commande précédente (généralement le deuxième mot de la ligne précédente) au point de. Avec un argument n, insérer le nième mot de la commande précédente (les mots dans la commande précédente, à commencer par le mot 0). Un argument négatif insère le nième mot de la fin de la commande précédente. Une fois que l'argument n est calculée, l'argument est extrait comme si le "!n" l'histoire de l'expansion avait été indiquée.
yank-dernier-arg (M-., M-_)
 Insérez le dernier argument de la commande précédente (le dernier mot de l'histoire précédente). Avec un argument, se comportent exactement comme yank-nth-arg. Les appels successifs à tirer-dernier-arg se déplacer en arrière dans la liste de l'historique, de l'insertion de la dernière argument de chaque ligne à son tour. L'histoire de l'expansion des installations sont utilisées pour extraire le dernier argument, comme si le "!$" l'histoire de l'expansion avait été indiquée. 
shell-extension de la ligne (M-C-e)
 L'élargissement de la gamme de la coquille. Effectue les alias et de l'histoire de l'expansion ainsi que l'ensemble de la coque mot expansions. Voir l'HISTOIRE de l'EXPANSION ci-dessous pour une description de l'histoire de l'expansion. 
histoire-agrandir-la ligne (M-^)
 Effectuez l'histoire de l'expansion sur la ligne actuelle. Voir l'HISTOIRE de l'EXPANSION ci-dessous pour une description de l'histoire de l'expansion.
insérer dernier argument (M-., M-_)
 Synonyme de yank-dernier-arg. 
fonctionner-et-get-next (C-o)
 Accepter la ligne en cours d'exécution et d'aller chercher la ligne suivante par rapport à la ligne actuelle de l'histoire de l'édition. Tout argument est ignoré. 
edit-et-exécuter-commande (C-xC-e)
 Invoquer un éditeur sur la ligne de commande courante, et d'exécuter le résultat des commandes shell.

11voto

John Lawrence Points 1719
<pre><code></code><p>Exécutera la commande 123 remplaçant la chaîne « ancienne » avec la chaîne « nouvelles ».</p></pre>

6voto

James Moore Points 3293

Vous pouvez obtenir en mode d’édition en appuyant sur M-^ (option-Maj-6 sur un mac).

Tapez ceci :

! 123-^

Et vous allez être montage commande #123. C’est un peu comme en utilisant ctrl-r, mais à partir de la syntaxe de point d’exclamation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X