136 votes

Exécuter à nouveau la même commande en tant que root

Parfois, lorsque j'exécute une commande, je ne remarque pas que j'avais besoin de l'exécuter en tant que super utilisateur pour avoir suffisamment d'autorisations.

Y a-t-il un moyen d'exécuter à nouveau la même commande mais en tant que super utilisateur ?

220voto

Jakub Points 253

La manière la plus simple est d'exécuter :

sudo !!

Cela exécutera la dernière commande en tant que super utilisateur.

Source.

81voto

wim Points 11887

entrer la description de l'image ici

Réponse : vous entrez sudo !! immédiatement après pour répéter la commande précédente avec des privilèges élevés.

<em>edit :</em> Image trouvée via <a href="http://www.reddit.com/r/linux/comments/f9gj6/">reddit</a>, et c'est une parodie de la bande dessinée originale <a href="http://xkcd.com/149/">xkcd</a> de Randall Munroe.

17voto

Lior Points 6542

Vous pourriez essayer la touche de la flèche vers le haut pour parcourir vos anciennes commandes et les réécrire/changer et ajouter le sudo devant elles. (le bouton d'accueil au-dessus des touches fléchées positionnera le curseur au début.)

Je n'aime pas l'idée de sudo !!, car parfois vous ajoutez une autre commande entre-temps et vous ne vous en souvenez plus.

15voto

arielf Points 2623

Cette question aurait pu être généralisée en "Exécuter la même commande mais avec quelques modifications", car l'une des décisions de design brillantes dans Unix, est que ce qui est implémenté une fois dans le shell, peut être exploité par n'importe quelle commande invoquée à partir du shell.

En d'autres termes, ce truc ne s'applique pas seulement à sudo:

  • Répétez la commande précédente en tant que superutilisateur (sudo !!)
  • Répétez la commande précédente et calculez le temps d'exécution (time !!)
  • Répétez la commande précédente avec un environnement différent (env A=b B=z !!)
  • Répétez la commande précédente (!!)

L'expansion de l'historique (aussi connue sous le nom de substitution d'historique) est simplement une fonctionnalité du shell pour faciliter la répétition des commandes précédentes (avec moins de frappes). Consultez la page de manuel de votre shell pour l'expansion de l'historique. Elle décrit beaucoup d'autres astuces et raccourcis que vous pouvez faire avec l'historique, par exemple :

Vous pouvez vous référer aux commandes précédentes par numéro :

!55                 # répéter la commande numéro 55
!-1                 # répéter la commande précédente, alias pour !!
!-2                 # répéter la commande avant la commande précédente

Vous pouvez vous référer à des mots individuels dans les commandes précédentes :

some-command !$     # exécuter some-command sur le dernier argument de la commande précédente

Vous pouvez également rechercher avant de répéter :

!?awk               # répéter la dernière commande incluant la chaîne 'awk'

Vous pouvez rechercher dans l'historique et remplacer quelque chose par autre chose :

!?awk?:s/str1/str2/  # répéter la commande précédente qui correspond à 'awk' en remplaçant str1 par str2

Et bien plus encore, car vous pouvez combiner la sélection de commande, la sélection d'argument, la recherche et le remplacement indépendamment.

La page de manuel de votre shell (dans ce cas man bash) est votre ami.

14voto

Olivier Dulac Points 976

Je vais simplement ajouter une alternative: aussi courte que de taper sudo !! et plus flexible:

Flèche vers le haut (une fois, ou jusqu'à ce que vous trouviez la commande que vous voulez sudo / modifier, si elle est plus ancienne)
ctrl+A   (placer le curseur au début de la ligne)
"sudo "
Entrée

C'est exactement le même nombre de frappes (je compte "ctrl+A" comme une seule...), mais en ajoutant "flèche vers le haut" vous pouvez le faire sur n'importe quelle commande de votre historique.

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