Назад | Перейти на главную страницу

Как «sudo !!» работает в баше

Как "sudo !!" работает в bash:

$ touch /bin/1
touch: cannot touch `/bin/1': Permission denied
$ sudo !!
sudo touch /bin/1

bash поддерживает функцию расширения истории. Расширение истории реализовано знаком «!». '!!' обратитесь к предыдущей команде.

Расширение истории выполняется сразу после чтения командной строки, перед системным вызовом 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

расширение bash "sudo !!" в «sudo touch / bin / 1», а затем запустите команду.

sudo !! просто говорит терминалу запустить предыдущую команду, но на этот раз под sudo. В этом случае это то же самое, что просто ввести sudo touch /bin/1 первый раз.