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

90

Parfois, lorsque je lance une commande, je ne remarque pas que je dois l'exécuter en tant que super utilisateur pour avoir suffisamment de permissions.

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

    
posée Trufa 27.05.2013 - 22:31
la source

10 réponses

165

Le moyen le plus simple est d’exécuter:

sudo !!

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

Source .

    
réponse donnée Trufa 27.05.2013 - 22:31
la source
63

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

modifier: Image trouvée via reddit , et c'est une parodie de la bande dessinée originale xkcd de Randall Munroe.

    
réponse donnée wim 30.05.2013 - 00:33
la source
17

Vous pouvez essayer la touche fléchée vers le haut pour faire défiler vos anciennes commandes et les réécrire / modifier et ajouter le sudo devant elles. (le bouton d’accueil situé au-dessus des touches fléchées définira la position au début.)

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

    
réponse donnée Xylol 27.05.2013 - 23:31
la source
12

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

Up-arrow (once, or until you find the command you want to sudo/edit, if it's older)
ctrl+A   (place cursor at beginning of line)
"sudo "
Enter

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

    
réponse donnée Olivier Dulac 28.05.2013 - 13:09
la source
7

Il y a plusieurs façons de le faire

  • Entrez simplement la commande à nouveau en ajoutant sudo avant la commande

  • Appuyez sur Flèche vers le haut pour obtenir la dernière commande et placez sudo devant.

  • Entrez sudo !!

Le !! se développe jusqu'à la dernière commande entrée. Vous pouvez faire des choses similaires avec d’autres choses avec l’historique de la ligne de commande, voir ici

    
réponse donnée user162424 28.05.2013 - 11:22
la source
6

Cette question aurait pu être généralisée dans " Exécuter la même commande mais avec quelques modifications ", car une des décisions brillantes de conception sous Unix est que ce qui est implémenté toute commande invoquée depuis le shell.

En d’autres termes, cette astuce ne s’applique pas juste à sudo :

  • Répétez la commande précédente en tant que superutilisateur ( sudo !! )
  • Répétez la commande précédente et chronométrez-la ( 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 (également appelée substitution d’historique) n’est qu’une fonction shell pour faciliter la répétition des commandes précédentes (avec moins de frappes). Vérifiez votre page de gestion de shell pour history expansion . Il décrit de nombreuses 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                 # repeat command number 55
!-1                 # repeat the previous command, alias for !!
!-2                 # repeat the command before the previous command

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

some-command !$     # run some-command on the last arg of previous command

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

!?awk               # repeat the last command including the string 'awk'

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

!?awk?:s/str1/str2/  # repeat previous command matching 'awk' replacing str1 by str2

Et bien plus encore, puisque vous pouvez combiner la sélection de commandes, la sélection d'arguments, la recherche et le remplacement indépendant.

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

    
réponse donnée arielf 31.05.2013 - 21:07
la source
5

J'utilise zsh au lieu de bash et je l'ai dans mon ~/.zshrc , en appuyant sur Alt + S insère sudo au début de la ligne de commande:

insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo

Malheureusement, je ne pouvais pas trouver un moyen de faire la même chose en bash.

    
réponse donnée Patches 28.05.2013 - 01:58
la source
1
su -c "!!"

Si vous n’avez pas la permission d’être root, le programme sudo ou sudo n’a pas été installé sur le système.

    
réponse donnée Achu 29.05.2013 - 06:37
la source
1

Comme je le préfère:

  • Flèche vers le haut
  • Accueil
  • "sudo"
  • Entrez

Mais il peut être plus facile de faire "sudo !!", à vous de choisir.

    
réponse donnée Farid El Nasire 14.06.2013 - 16:22
la source
1

Si vous voulez le faire dans un alias, vous devez utiliser alias redo='sudo $(history -p !!)' pour une raison quelconque.

    
réponse donnée Aaron Franke 07.07.2016 - 11:55
la source

Lire d'autres questions sur les étiquettes