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?
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.
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.
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
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
:
sudo !!
) time !!
) env A=b B=z !!
) !!
) 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.
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.
Comme je le préfère:
Mais il peut être plus facile de faire "sudo !!", à vous de choisir.
Si vous voulez le faire dans un alias, vous devez utiliser alias redo='sudo $(history -p !!)'
pour une raison quelconque.
Lire d'autres questions sur les étiquettes command-line sudo