如何“sudo !!”在bash中工作

怎么“sudo !!” 在bash中工作:

$ 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