Parfois, lorsque j'exécute une commande, je ne remarque pas que je devais l'exécuter en tant que super utilisateur pour disposer de suffisamment d'autorisations.
Est-il possible d'exécuter à nouveau la même commande mais en tant que super utilisateur?
command-line
sudo
Trufa
la source
la source
!!
seule exécute la commande précédente telle que sauvegardée danshistory
. De plus, faire!-1
,!-2
etc. exécute votre dernière commande, votre dernière dernière commande, etc. Pratique!!<command>
exécutera le dernier événement de~/.bash_history
ce début avec<command>
!
truc copié à partir detcsh
m'a bousillé plus de fois qu'il n'a jamais été utile. Les guillemets doubles ne protègent pas de l'interprétation de!
.$ foo "!bar"
->!bar: event not found
.Un séjour sans faille
réponse : vous entrez
sudo !!
immédiatement après pour répéter la commande précédente avec des privilèges accrus.edit: Image trouvée via reddit , et c’est une parodie de la bande dessinée xkcd originale de Randall Munroe.
la source
Vous pouvez essayer la flèche vers le haut pour faire défiler vos anciennes commandes, les réécrire / les modifier et les ajouter
sudo
devant. (le bouton d'accueil au-dessus des touches fléchées réglera la position au début.)Je n'aime pas l'
sudo !!
idée, car parfois vous ajoutez une autre commande entre les deux et vous ne vous en souvenez plus.la source
sudo !!
, le shell se développera!!
afin que vous puissiez voir la commande à exécuter. Il peut donc être irritant d'appuyer sur Ctrl-C et trouver la bonne commande, mais au moins, cela ne vous prendra pas au dépourvu.!!
sudo !!<TAB>
et il se complète automatiquement!!
. Bash peut élargir l’histoire avecM-^
(pour moi, alt + shift + 6), mais c’est moins fluide (vous pouvez néanmoins le réassocier). Il y a aussishopt -s histverify
, ce qui fait que lorsque vous utilisez le développement de l'historique et appuyez sur Entrée, il vous donne une autre ligne d'invite avec le développement effectué pour vous permettre de le voir / le modifier.shopt -s histverify
ne va pas aider un bit. La plupart des gens s'habitueront à frapperEnter
deux fois. À ce stade, il est encore trop tard pour vérifier ce qui s'est passé.Je vais juste ajouter une alternative: aussi courte que taper
sudo !!
et plus flexible:C'est exactement le même nombre de frappes au clavier (je compte "ctrl + A" comme un ...), mais en ajoutant "flèche haut", vous pouvez le faire selon la commande de votre historique.
la source
set -o vi
). Ensuite, vous pouvez échapper (passer en mode commande), puis 'I' (majuscule 'i', insérer en début de ligne).Il y a quelques façons de le faire
Il suffit de saisir à nouveau la commande en ajoutant
sudo
avant la commandeAppuyez sur Up arrowpour obtenir la dernière commande et la mettre
sudo
devant.Entrer
sudo !!
L'
!!
agrandit jusqu'à la dernière commande entrée. Vous pouvez faire la même chose avec d'autres choses avec l'historique de la ligne de commande, voir icila source
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 brillantes de la conception sous Unix est que ce qui est implémenté une fois dans le shell peut être exploité par n'importe quelle commande appelée à partir du shell.
En d'autres termes, cette astuce ne s'applique pas uniquement à
sudo
:sudo !!
)time !!
)env A=b B=z !!
)!!
)L’extension d’historique (également appelée substitution d’historique) n’est qu’une fonctionnalité du shell facilitant la répétition des commandes précédentes (avec moins de frappes au clavier). Vérifiez votre page de manuel shell pour
history expansion
. Il décrit beaucoup d'autres astuces et raccourcis que vous pouvez utiliser avec l'historique, par exemple:Vous pouvez vous référer aux commandes précédentes par leur numéro:
Vous pouvez faire référence à des mots individuels dans les commandes précédentes:
Vous pouvez également rechercher avant de répéter:
Vous pouvez rechercher l'historique et remplacer quelque chose par quelque chose d'autre:
Et bien plus encore, puisque vous pouvez combiner la sélection de commandes, la sélection d'arguments, la recherche et le remplacement de manière indépendante.
La page de manuel de votre shell (dans ce cas
man bash
) est votre ami.la source
J'utilise zsh au lieu de bash et j'ai ceci dans mon
~/.zshrc
, pressant Alt+ Sinsère doncsudo
au début de la ligne de commande:Malheureusement, je ne pouvais pas trouver un moyen de faire la même chose en bash.
la source
~/.inputrc
"\es":"\C-asudo "
et vous irez au début d’une longue ligne et sudo sera inséré au début de la ligne en appuyant suralt-s
. Redémarrez le terminal ou relisez-le~/.inputrc
pour que cela fonctionne.Si vous voulez le faire dans un alias, vous devez l'utiliser
alias redo='sudo $(history -p !!)'
pour une raison quelconque.la source
Si vous n'avez pas la permission d'être root avec sudo ou le programme sudo ne s'est pas installé sur le système.
la source
La façon dont je le préfère:
Mais il serait peut-être plus facile de faire "sudo !!", à vous de choisir.
la source