Simplesmente use UP e CTRL-A .
A função !sudo
e sudo !!
é fácil.
Com uma diferença:
-
sudo !!
executará o último comando obtido do histórico comsudo
no começo. -
!sudo
executará o último comando no histórico que começou comsudo
. -
Geralmente CTRL-A traz você no começo da linha em um terminal linux e CTRL-E até o final.
Se você quiser, pode continuar usando sua estratégia. Você só precisa descobrir o atalho do seu sistema. Você pode encontrar uma lista de atalhos no ambiente gráfico e de texto aqui .
Apenas um aviso : sudo !!
e !sudo
funcionam muito rápido e você não tem controle visual da linha que está executando como superusuário . Isso pode resultar em prejudicial às vezes. Especialmente se você incorrer em um erro de impressão.
Vamos fazer um exemplo dramático:
cd $HOME/Directory_To_Delete # You go to delete what is inside a directory
rm -rf . ; cd .. # You do it and go up of one
apt-get update # Note the space in the beginning of the line
sudo !! # Gone!! Now you realize you never really wanted
Tarde demais, você acabou de apagar seu diretório pessoal e todas as subpastas !! .
When you write a command with a space as a first character it's possible that it will not finish in the history. This depend from the value of the variable $HISTCONTROL. If the list of its values includes ignorespace (or ignoreboth) the lines which begin with a space character are not saved in the history list. So with sudo !! you will execute the last command before.
Você pode imaginar uma situação semelhante com !sudo
, ele executará o último comando começando com sudo
registrado no histórico, mas se o último que você se lembra estava começando com um espaço ... agora você sabe que vai usar outro.
Última nota: menos é dramático o seu erro mais pode ser desonesto porque pode passar sem que você perceba ... e você corre o risco de ser chamado para pagar todos os interesses de uma conta que você não consegue lembrar.
Atualização (Bash é ótimo):
Com versões recentes do Bash, é possível corrigir esse comportamento perigoso com o seguinte comando que sugiro colocar em ~/.bashrc
file:
shopt -s histverify
De man bash
você pode ler
If the histverify shell option is enabled and readline is being used, history substitutions are not immediately passed to the shell parser. Instead, the expanded line is reloaded into the readline editing buffer for further modification.
Para que você possa ler e modificar, quando necessário, o comando que você executará.
Como não é a configuração padrão em muitas distribuições, ainda precisamos lembrar quando usamos outras contas.