Como o “sudo !!” funciona no bash

3

Como "sudo !!" trabalha no bash:

$ touch /bin/1
touch: cannot touch '/bin/1': Permission denied
$ sudo !!
sudo touch /bin/1
    
por makeji 19.02.2011 / 08:51

2 respostas

12

bash suporta um recurso de expansão de histórico. Expansões de história são implementadas pelo '!'. '!!' consulte o comando anterior.

A expansão do histórico é realizada imediatamente após a leitura de uma linha de comando, antes da chamada do sistema execve ().

$ touch /bin/1
touch: невозможно выполнить touch для «/bin/1»: Отказано в доступе
$ sudo strace !!                
sudo strace touch /bin/1
execve("/usr/bin/touch", ["touch", "/bin/1"], [/* 17 vars */]) = 0

expansão do bash "sudo !!" para "sudo touch / bin / 1" e, em seguida, execute o comando.

    
por 19.02.2011 / 08:54
1

sudo !! está apenas dizendo ao terminal para executar o comando anterior, mas desta vez sob o comando sudo. Neste caso, é o mesmo que digitar sudo touch /bin/1 da primeira vez.

    
por 19.02.2011 / 14:30

Tags