A maneira mais simples é executar:
sudo !!
Isso executará o último comando, mas como superusuário.
Source .
Às vezes, quando executo um comando, não percebo que precisei executá-lo como superusuário para ter permissão suficiente.
Existe uma maneira de executar o mesmo comando novamente, mas como superusuário?
Você pode tentar a tecla de seta para cima para rolar pelos comandos antigos e reescrevê-los / alterá-los e adicionar o sudo
na frente deles. (o botão home acima das setas direciona a posição para o começo.)
Eu não gosto da ideia de sudo !!
, porque às vezes você adiciona outro comando e não se lembra mais.
Vou apenas adicionar uma alternativa: como curto como digitar sudo !!
e mais flexível:
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
É exatamente o mesmo número de pressionamentos de teclas (eu conto "ctrl + A" como um ...), mas adicionando "seta para cima" você pode fazer isso em qualquer comando que esteja em seu histórico.
Existem algumas maneiras de fazer isso
Basta digitar o comando novamente, adicionando sudo
antes do comando
Pressione Seta para cima para obter o último comando e coloque sudo
na frente dele.
Insira sudo !!
O !!
se expande para o último comando inserido. Você pode fazer coisas semelhantes com outras coisas com o histórico da linha de comando, veja aqui
Esta questão poderia ter sido generalizada em " Executar mesmo comando, mas com alguma modificação ", já que uma das decisões de design brilhantes no Unix é que o que é implementado uma vez no shell pode ser aproveitado por qualquer comando sendo invocado a partir do shell.
Em outras palavras, esse truque não se aplica apenas a sudo
:
sudo !!
) time !!
) env A=b B=z !!
) !!
) A expansão do histórico (também conhecida como substituição de histórico) é apenas um recurso de shell para facilitar a repetição de comandos anteriores (com menos pressionamentos de teclas). Verifique sua página de manual do shell para history expansion
. Ele descreve muito mais truques e atalhos que você pode fazer com o histórico, por exemplo:
Você pode consultar os 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
Você pode se referir a palavras individuais em comandos anteriores:
some-command !$ # run some-command on the last arg of previous command
Você também pode pesquisar antes de repetir:
!?awk # repeat the last command including the string 'awk'
Você pode pesquisar o histórico e substituir algo por outra coisa:
!?awk?:s/str1/str2/ # repeat previous command matching 'awk' replacing str1 by str2
E muito mais, já que você pode combinar seleção de comando, seleção de argumentos, pesquisar e substituir independentemente.
A página man do seu shell (neste caso, man bash
) é sua amiga.
Eu uso zsh ao invés do bash e tenho isso no meu ~/.zshrc
, então pressionando Alt + S insere sudo
no começo da linha de comando:
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo
Infelizmente, não consegui encontrar uma maneira de fazer a mesma coisa no bash.
su -c "!!"
Se você não tem permissão para ser root com o sudo ou sudo, o programa não foi instalado no sistema.
Do jeito que eu prefiro:
Mas pode ser mais fácil apenas fazer "sudo !!", depende de você.
Se você quiser fazer isso em um alias, você tem que usar alias redo='sudo $(history -p !!)'
por algum motivo.
Tags command-line sudo