Quiero poder ejecutar un comando, falla porque no tiene los permisos adecuados. Entonces puedo escribir "por favor" para sudo el comando que acabo de ejecutar.
Esto es lo que quiero hacer en la terminal:
$ run command
"you don't have access to do that"
$ please
"ran successfully"
Vi que !!
tomaría el comando anterior, así que pensé que podría usar eso, pero no puedo hacer que funcione.
mi script de shell please.sh se ve así, pero no puedo hacer que ninguno de estos funcione. Simplemente dice "¡comando no encontrado!" e imprime el uso de sudo.
#!/bin/zsh
#sudo !!
#sudo `!!`
sudo $(!!)
command-line
zsh
jb.
fuente
fuente
sudo !!
¿funciona como se esperaba? Yo creo que !! puede ser un alias bash, por lo que puede no funcionar en zsh!!
y otros) solo funciona en shells interactivos y no en scripts.sudo !!
en modo interactivo casi funciona como se esperaba. cuando presioné enter, lo reemplazaría!!
con el comando anterior. luego tuve que presionar enter nuevamente para ejecutarlo.Respuestas:
No se puede usar
!!
en un script de shell, ya que no se puede acceder al shell primario en un shell secundario. Aunque recomiendo usarsudo !!
, si realmente quieres hacer un script BASH, deberías usar .bash_history, así:Definitivamente NO es una solución perfecta, pero debería funcionar.
Si está utilizando ZSH, esto no funcionará, ya que ZSH no se envía a .bash_history (que yo sepa).ACTUALIZACIÓN : Aquí hay una versión que debería funcionar con ZSH:¡Espero que esto ayude!
Si no comprende el script, simplemente ejecuta el último comando ingresado en BASH con sudo.
fuente
fc
ohistory
incorporados. Por defecto, $ HISTFILE no se actualiza hasta que cierre la sesión de bash.Agregue a su .zshrc:
fuente
fc
significa comando de reparación. La documentación está aquí .alias lastcmd="fc -ln -1 | pbcopy"
Creo que esto debería funcionar en Ubuntu (?):alias lastcmd="fc -ln -1 | xclip -selection clipboard
.