Tho*_*ler 54 command-line bash
我看到有人打字
apt-get install !!
Run Code Online (Sandbox Code Playgroud)
他这样做了几次,每次都安装了不同的程序。似乎它会自动找出接下来需要什么。
但是,当我在我的 Ubuntu 14.04.1 LTS 虚拟机上尝试时,它只是显示了一些使用说明。谷歌搜索apt-get install !!似乎不太好。许多搜索结果不包含双感叹号。
这是什么apt-get install !!做,什么可以在我的机器上缺少它没有工作?
Ste*_*hen 74
!! 是 bash 中的一个快捷方式,表示最后执行的命令。
尝试这个:
echo hello
!!
Run Code Online (Sandbox Code Playgroud)
在这种情况下,!!将扩展为另一个echo hello。
我想象发生的事情是他们试图运行一个命令但它失败并抱怨它没有安装。然后他们输入,sudo apt-get install !!因为包名称与他们试图运行的命令的名称巧合。生成的命令将尝试安装与他们刚刚尝试执行的命令同名的软件包。
hee*_*ayl 41
!!与 无关apt-get。它是一个 shell 关键字,将扩展为上一个命令。这种扩展是在解释当前命令之前由 shell 完成的。
来自man bash:
!! 参考上一条命令。这是'!-1'的同义词。
例如,如果您运行一个命令:
echo "foo"
Run Code Online (Sandbox Code Playgroud)
然后如果你运行:
sudo apt-get install !!
Run Code Online (Sandbox Code Playgroud)
它将扩展为:
sudo apt-get install echo foo
Run Code Online (Sandbox Code Playgroud)
如您所见,它被扩展为两个包echo,另一个是foo. 没有名为fooand 的独立包echo。除了内置的 shell 之外,echo还有一个/bin/echo可执行文件,它是 GNU-coreutils 包的一部分。因此,您会收到错误消息,指出没有此类软件包可用。
另一方面,另一个人可能正在做这样的事情:
echo "foo"
Run Code Online (Sandbox Code Playgroud)
如您所见cowsay,正在安装。
我建议你不要这样做(除非你确定),明确无害。
Bil*_*lal 16
!!: 参考上一条命令。这是!-1(来源)的同义词。
例如,如果我执行:
./test
Run Code Online (Sandbox Code Playgroud)
然后记住我需要成为 Root,然后我可以简单地输入:
sudo !!
Run Code Online (Sandbox Code Playgroud)
它与键入相同:
sudo ./test
Run Code Online (Sandbox Code Playgroud)
当您的最后一个命令包含大量字符时,这很有用。
| 归档时间: |
|
| 查看次数: |
5054 次 |
| 最近记录: |