web-dev-qa-db-fra.com

Comment répéter la dernière partie d'une commande précédente?

J'utilise zsh avec le framework oh-my-zsh de Robby Russell. Comment puis-je créer un raccourci ou quelque chose pour répéter la dernière partie d'une commande?

par exemple, si je tape:

mv something in/this/difficult/to/type/directory

y a-t-il un moyen de l'obtenir facilement: dans/this/difficult/to/type/directory?

38
Carlo

Je viens de tester et il semble que vous puissiez le faire de la même manière que dans bash: !$.

40
Kevin

!* vous donneALLles arguments de la dernière commande.

Exemple:

% echo hello world  
hello world

% echo !*  
(expands to)-> % echo hello world
hello world
17
Dave

!$ vous donne le dernier paramètre de la commande précédente.

Exemple:

$ echo hello world
hello world
$ echo !$
echo world
world
13
dogbane

ajoutez bindkey '\ e.' insérer-dernier-mot à votre .zshrc

- sp3ctum, en commentaire ici

12
Andrew Vandever

Que vous soyez dans bash ou zsh , vous pouvez utiliser l'opérateur ! pour récupérer les arguments de votre commande précédente:

Si nous prenons: echo a b c d comme exemple

  • !$ - le dernier argument: d
  • !:*- tous les arguments: a b c d (peut être raccourci !*)
  • !:1 - le premier argument: a (identique à !^)
  • !:1-3 - arguments du premier au troisième: a b c
  • !:2-$ - arguments de la seconde à la dernière: b c d

Ce dernier point répond à votre question, vous pouvez prendre la dernière partie de votre commande.

Note: $:0 est la dernière commande exécutée, ici ce serait echo dans notre exemple

11
Charles Gueunet

J'ai aussi rencontré ceci - j'ai toujours utilisé Alt. pour insert-last-Word in bash. Trouvé où oh-my-zsh annule ceci.

Dans lib/key-bindings.zsh, commentez ceci et cela devrait fonctionner comme dans bash:

bindkey -s '\e.' "..\n"

7
Brian Ray

<esc>. fonctionne également avec zsh et oh-my-zsh.

2
ha7ilm

Juste pour développer @Charles Gueunet answer;

  • !! - répète la dernière commande en entier

Ceci est utile si vous avez oublié d'ajouter Sudo au début de la commande. Exemple trivial:

$ cat /some/root/owned/thing/with/a/long/path
Permission denied
$ Sudo !!
here's the conent
0
Arj