Answers:
!!
是bash中的快捷方式,表示最后执行的命令。
尝试这个:
echo hello
!!
在这种情况下,!!
将扩展到另一个echo hello
。
我想象发生了什么事,他们试图运行命令,但命令失败并抱怨未安装。因此,他们输入sudo apt-get install !!
了该名称,因为软件包名称恰好与他们尝试运行的命令名称相同。产生的命令将尝试使用与他们刚尝试执行的命令相同的名称来安装软件包。
lynx
,看到它尚未安装,然后运行apt-get install !!
它将安装lynx。它对我不起作用,因为我尝试apt-get install !!
作为唯一命令。
sudo
诸如的方式运行apt-get install
某些内容。
apt-get install some-program
,当您意识到自己没有权限时,您只能输入sudo !!
,该权限会扩展为sudo apt-get install some-program
。
!!
是的别名!-1
,表示bash历史记录中的最后一项。!-2
是倒数第二个等等。
!!
与无关apt-get
。它是一个shell关键字,将扩展为上一个命令。在解释当前命令之前,此扩展由Shell完成。
来自man bash
:
!! 请参考上一条命令。这是`!-1'的同义词。
例如,如果您运行命令:
echo "foo"
然后,如果您运行:
sudo apt-get install !!
它将扩展为:
sudo apt-get install echo foo
如您所见,它被扩展为两个包echo
,另一个为foo
。没有名为foo
和的独立软件包echo
。除了内置的shell外,echo
还有/bin/echo
可执行文件是GNU-coreutils软件包的一部分。因此,您将收到错误消息,指出没有可用的软件包。
另一方面,其他人可能正在做这样的事情:
$ cowsay
The program 'cowsay' is currently not installed. You can install it by typing:
sudo apt-get install cowsay
$ sudo apt-get install !!
sudo apt-get install cowsay
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
filters
The following NEW packages will be installed:
cowsay
0 upgraded, 1 newly installed, 0 to remove and 119 not upgraded.
Need to get 18.5 kB of archives.
如您所见cowsay
,正在安装中。
我建议您不要这样做(除非您确定),明确表示并不会造成伤害。
!!
。我知道它的意思,但是我喜欢您描述它的方式。
!!
:参考上一条命令。这是!-1
(The source)的同义词。
例如,如果我执行:
./test
然后记住我需要成为Root,然后我可以简单地输入:
sudo !!
与输入相同:
sudo ./test
当您的最后一个命令包含很多字符时,此功能很有用。
sudo !!
命令。我多年以来一直在做的事情是按一次向上键,然后将光标一直移到最左边并添加sudo
。
sudo
。
Ctrl+A
或至少不是Home
?