Ejecuta el mismo comando nuevamente pero como root

90

A veces, cuando ejecuto un comando, no noto que necesito ejecutarlo como superusuario para tener suficiente permiso.

¿Hay alguna forma de ejecutar el mismo comando nuevamente pero como superusuario?

    
pregunta Trufa 27.05.2013 - 22:31

10 respuestas

165

La forma más simple es ejecutar:

sudo !!

Esto ejecutará el último comando pero como superusuario.

Source .

    
respondido por el Trufa 27.05.2013 - 22:31
63

Respuesta: ingresa sudo !! directamente después para repetir el comando anterior con privilegios escalados.

editar: imagen encontrada a través de reddit , y es una parodia del original comic xkcd de Randall Munroe.

    
respondido por el wim 30.05.2013 - 00:33
17

Puedes probar la tecla de flecha hacia arriba para desplazarte por los comandos anteriores y reescribirlos / cambiarlos y agregar el sudo delante de ellos. (el botón de inicio sobre las teclas de flecha establecerá la posición al principio).

No me gusta la idea de sudo !! , porque a veces agregas otro comando entremedio y ya no lo recuerdo.

    
respondido por el Xylol 27.05.2013 - 23:31
12

Añadiré una alternativa: tan breve como escribir sudo !! y más 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

Es exactamente el mismo número de teclas (cuento "ctrl + A" como uno ...), pero al agregar "flecha arriba" puede hacerlo en el comando que esté en su historial.

    
respondido por el Olivier Dulac 28.05.2013 - 13:09
7

Hay algunas formas de hacer esto

  • Simplemente ingrese nuevamente el comando agregando sudo antes del comando

  • Presione Flecha hacia arriba para obtener el último comando y coloque sudo delante de él.

  • Ingrese sudo !!

El !! se expande hasta el último comando ingresado. Puede hacer cosas similares con otras cosas con el historial de línea de comando, consulte aquí

    
respondido por el user162424 28.05.2013 - 11:22
6

Esta pregunta podría haberse generalizado en " Ejecutar el mismo comando pero con alguna modificación ", ya que una de las decisiones de diseño más brillantes en Unix es que lo implementado una vez en el shell puede aprovecharse cualquier comando invocado desde el shell.

En otras palabras, este truco no se aplica solo a sudo :

  • Repite el comando anterior como superusuario ( sudo !! )
  • Repite el comando anterior y mide el tiempo ( time !! )
  • Repite el comando anterior con un entorno diferente ( env A=b B=z !! )
  • Repite el comando anterior ( !! )

La expansión de historial (también conocida como sustitución de historial) es solo una característica de shell para facilitar la repetición de comandos previos (con menos teclas). Verifica la página de tu shell para history expansion . Describe muchos más trucos y atajos que puede hacer con la historia, por ejemplo:

Puede consultar los comandos anteriores por número:

!55                 # repeat command number 55
!-1                 # repeat the previous command, alias for !!
!-2                 # repeat the command before the previous command

Puede referirse a palabras individuales en comandos anteriores:

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

También puede buscar antes de repetir:

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

Puede buscar el historial y reemplazar algo por otra cosa:

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

Y mucho más, ya que puede combinar la selección de comandos, la selección de argumentos, buscar y reemplazar de forma independiente.

La página man de tu shell (en este caso man bash ) es tu amigo.

    
respondido por el arielf 31.05.2013 - 21:07
5

Uso zsh en lugar de bash y tengo esto en mi ~/.zshrc , así que presiono Alt + S inserta sudo al principio de la línea de comando:

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

Desafortunadamente, no pude encontrar la manera de hacer lo mismo en bash.

    
respondido por el Patches 28.05.2013 - 01:58
1
su -c "!!"

Si no tiene permiso para ser root con sudo o sudo, el programa no se instaló en el sistema.

    
respondido por el Achu 29.05.2013 - 06:37
1

La forma en que lo prefiero:

  • Tecla de flecha arriba
  • Inicio
  • "sudo"
  • Entrar

Pero podría ser más fácil simplemente hacer "sudo !!", depende de usted.

    
respondido por el Farid El Nasire 14.06.2013 - 16:22
1

Si quieres hacerlo en un alias, debes usar alias redo='sudo $(history -p !!)' por algún motivo.

    
respondido por el Aaron Franke 07.07.2016 - 11:55

Lea otras preguntas en las etiquetas