我看到有人在打字
apt-get install !!
他这样做了几次,每次都安装了不同的程序。似乎它会自动找出下一步需要什么。
然而,当我在我的 Ubuntu 14.04.1 LTS 虚拟机上尝试时,它只是显示了一些使用说明。谷歌搜索apt-get install !!
似乎效果不佳。许多搜索结果不包含双感叹号。
我的机器上有什么功能apt-get install !!
和可能缺少什么它不工作?
我看到有人在打字
apt-get install !!
他这样做了几次,每次都安装了不同的程序。似乎它会自动找出下一步需要什么。
然而,当我在我的 Ubuntu 14.04.1 LTS 虚拟机上尝试时,它只是显示了一些使用说明。谷歌搜索apt-get install !!
似乎效果不佳。许多搜索结果不包含双感叹号。
我的机器上有什么功能apt-get install !!
和可能缺少什么它不工作?
!!
是 bash 中的快捷方式,表示最后执行的命令。尝试这个:
在这种情况下,
!!
将扩展为另一个echo hello
.我想发生的事情是他们试图运行一个命令但它失败了并抱怨它没有安装。然后他们键入
sudo apt-get install !!
,因为包名称恰好与他们试图运行的命令的名称相同。生成的命令将尝试安装与他们刚刚尝试执行的命令同名的包。!!
与 . 无关apt-get
。它是一个 shell 关键字,将扩展到上一个命令。这种扩展是在解释当前命令之前由 shell 完成的。来自
man bash
:例如,如果您运行命令:
然后,如果你运行:
它将扩展为:
如您所见,它被扩展为两个包
echo
,一个是foo
. 没有名为foo
and的独立包echo
。除了内置的 shell 之外,echo
还有一个/bin/echo
可执行文件,它是 GNU-coreutils 包的一部分。因此,您会收到错误消息,指出没有此类软件包可用。另一方面,另一个人可能正在做这样的事情:
如您所见
cowsay
,正在安装。我建议你不要这样做(除非你确定),明确无害。
!!
:参考前面的命令。这是!-1
(The source ) 的同义词。例如,如果我执行:
然后记住我需要成为 Root,然后我可以简单地输入:
这与键入相同:
当您的最后一个命令包含很多字符时,它很有用。
问题已经回答过了,我就不重复了。但是,我想指出的是,在各种 shell 中有许多这样的快捷方式可以帮助重复/查找/编辑命令。我使用的一些是:
!$
随后ENTER将键入最后一个命令的最后一个字。例如,这会让你进入
/let/me/in
vi /home/mycoolproject.sh
并跟进一些随机命令,如ls
,cd
,pwd
等,那么只需键入Ctrl-R后跟cool
将调出该vi
命令。只需搜索 bash(或 csh 或其他)键盘快捷键,这将是您今天做的最好的事情!