$ touch /bin/1 touch: cannot touch `/bin/1': Permission denied $ sudo !! sudo touch /bin/1
bash支持历史扩展function。 历史扩展由“!”实现。 “!” 参考前面的命令。
在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 !! 只是告诉terminal运行以前的命令,但这次在sudo下。 在这种情况下,它只是第一次键入sudo touch /bin/1 。