46 votes

Exécuter une commande avec l'argument de la dernière commande

Lorsque vous exécutez des commandes, vous avez parfois besoin d'exécuter une commande avec l'argument de la dernière commande. Comment pouvez-vous faire cela ?

Bien sûr, à part l'utilisation des touches fléchées et Del clés : ... DelDelDel ... Del<new_command> .

62voto

Radu Rădeanu Points 156862

Par exemple, si vous exécutez cette commande :

mkdir long_path_here/new_dir

le plus probable est que vous vouliez aller dans le répertoire récemment créé. Vous pouvez le faire en utilisant les "raccourcis" suivants :

  • cd Esc. - type cd et après avoir appuyé sur Esc suivi par . (pas en même temps). Si la commande précédente n'a pas d'arguments, vous obtiendrez la commande précédente elle-même.
  • cd !* - dans ce cas, vous obtiendrez tous les arguments de la commande previuos. Si la commande précédente n'a pas d'arguments, vous ne recevrez rien.
  • cd Alt + . - type cd et après avoir appuyé sur Alt y . (dans le même temps). En fait, en utilisant cette méthode et en continuant à appuyer sur . (sans libérer Alt ), vous obtiendrez le dernier argument de chaque commande dans l'historique. Si une commande n'a pas d'arguments, vous obtiendrez la commande elle-même.

En général : <command> Esc. o <command> !* o <command> Alt + . .

43voto

RandomMooCow Points 556

Il existe quelques raccourcis si vous voulez tous les arguments de la commande précédente, ou seulement le dernier argument.

  • Pour tous les arguments : <command> !*
  • Pour le dernier argument : <command> !$

Exemples :

ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/

ls foo/ bar/
ls !$ # Gives the results of ls bar/

Si vous voulez un seul argument à partir d'une liste d'arguments de la commande précédente, vous pouvez utiliser <command> !!:<argNumber>

Exemple :

ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/

9voto

defhlt Points 211

Mentionné !* y !$ est une bonne chose, mais quand vous avez besoin de faire un peu d'édition, les raccourcis readline viennent vous aider !

Par exemple, au lieu des innombrables ... DelDelDel ... Del vous pouvez simplement appuyer sur Ctrl-a (sauter au début de la ligne) Alt+d (supprimer jusqu'à la fin du mot)

Pour plus d'informations man readline et chercher Default key bindings .

5voto

Chris Points 71

Pour prendre le n de votre commande précédente, tapez Alt + n + Alt_ . Par exemple, après :

$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

en tapant echo suivi par Alt2Alt_ vous le donnera à la prochaine invite :

$ echo 2

La "capture d'écran" après avoir appuyé sur la touche Alt2 est :

(arg: 2) echo

Vous pouvez répéter Alt_ plusieurs fois pour obtenir le n e argument des commandes précédentes en succession.

Une autre idée utile est de définir des alias r="fc -s" . Ensuite, vous pouvez effectuer des substitutions de commandes :

$ echo 1
1
$ r echo=history
history 1
27755  history 1

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X