Je veux pouvoir exécuter une commande, elle échoue car elle ne dispose pas des autorisations appropriées. Ensuite, je peux écrire "s'il vous plaît" à sudo la commande que je viens d'exécuter.
Voici ce que je veux faire dans le terminal:
$ run command
"you don't have access to do that"
$ please
"ran successfully"
J'ai vu que !!
cela récupérerait la commande précédente, donc j'ai pensé que je pouvais l'utiliser, mais je ne peux pas le faire fonctionner.
mon script shell please.sh ressemble à ceci, mais je ne peux pas faire fonctionner ces éléments. Il dit simplement "commande introuvable !!" et imprime l'utilisation de sudo.
#!/bin/zsh
#sudo !!
#sudo `!!`
sudo $(!!)
command-line
zsh
jb.
la source
la source
sudo !!
t-il comme prévu? Je pense !! peut juste être un alias bash, donc cela peut ne pas fonctionner dans zsh!!
et d'autres) ne fonctionne que dans des shells interactifs et non dans des scripts.sudo !!
en mode interactif fonctionne presque comme prévu. lorsque j'appuyais sur Entrée, il serait remplacé!!
par la commande précédente. puis j'ai dû appuyer à nouveau sur enter pour l'exécuter.Réponses:
Vous ne pouvez pas utiliser
!!
dans un script shell, car vous ne pouvez pas accéder au shell parent dans un shell enfant. Bien que je recommande d'utilisersudo !!
, si vous voulez vraiment créer un script BASH, vous devrez utiliser .bash_history, comme ceci:Ce n'est certainement pas une solution parfaite, mais cela devrait faire l'affaire.
Si vous utilisez ZSH, cela ne fonctionnera pas, car ZSH ne sort pas dans .bash_history (à ma connaissance).MISE À JOUR : Voici une version qui devrait fonctionner avec ZSH:J'espère que cela t'aides!
Si vous ne comprenez pas le script, il exécute simplement la dernière commande entrée dans BASH avec sudo.
la source
fc
ouhistory
intégré. Par défaut, $ HISTFILE n'est pas mis à jour tant que vous ne vous déconnectez pas de bash.Ajoutez à votre .zshrc:
la source
fc
signifie commande fixe. La documentation est ici .alias lastcmd="fc -ln -1 | pbcopy"
Je crois que cela devrait fonctionner sur Ubuntu (?):alias lastcmd="fc -ln -1 | xclip -selection clipboard
.