按向上按钮很麻烦,而且我可能会错过我正在寻找的命令。因此,history
在终端上输入时,我会得到之前输入的所有命令,并以数字为索引。有什么方法可以只调用与命令关联的数字吗?
答案1
bash 历史记录可以做很多有用的事情,Terry Wang 提到的搜索Strg-r
是其中很重要的一个。但是也可以做你要求的事情。
你可以用 重新执行上一个命令!!
。这样,你还可以编辑上一个命令。例如,如果你忘记获取命令的 root 权限
apt-get install a-long-list-of-packages
你不必重新输入所有这些。只需调用
sudo !!
如果你想在历史记录中的特定位置重新执行命令,你也可以使用!
,例如
!3
重新执行位置 3 处的命令。请注意,这是从顶部开始计算的。因此,如果您在历史记录中存储了 500 条命令,!1
则为“500 条命令之前”。您也可以使用负数。例如
!-2
将重新执行倒数第二条命令。
您还可以重新执行以如下字符串开头的最后一个命令
!apt-
这将重做以“apt-”开头的最后一行。如果你想要字符串出现在行中任何地方的最后一个命令,你可以使用类似
!?pt-ge
bash history 可以做更多有趣的事情。为了展示其广泛的可能性,你可以从 history 中专门访问命令的参数。因此
!-5:3:p
将打印倒数第二条命令的第三个参数至第五个参数。
编辑:关于下面 Rudie 的评论,在标准设置下,这个 bash 历史扩展确实是直接执行的。最好这样描述:像这样的!-3
调用被取代使用 shell 的历史记录中的倒数第三条命令然后您的输入(包含替换)已执行。因此,如果您键入!-3
并按下ENTER
,而您的倒数第三个命令是,则其效果与您再次键入并“自行”按下的ls ~
效果相同。ls ~
ENTER
如果您不想这样做,您可以设置 shell 选项histverify
。要设置和取消设置 shell 选项,您可能需要阅读命令shopt
。使用histverify
set,类似这样的调用!-3
只会将历史记录中的替换写入命令行,但不会直接执行它。您可以自己按下关键键ENTER
- 或者如果您愿意的话,可以不这样做。
答案2
是的,有。例如,如果你想执行旁边有数字 1234 的命令,请执行以下操作:
!1234
其他有用的东西:
如果您想运行最后运行的命令,请执行以下操作:
!!
如果您想运行最后
ls
运行的命令,请执行以下操作:!ls
如果您刚刚运行
ls /some/long/path
,并且想要cd
执行此操作,请执行以下操作:cd !$
了解更多信息:
答案3
使用组合键Ctrl+ R,您将能够使用关键字来搜索您的 Bash 历史记录。
快速 bash 键绑定参考可以在这里找到:http://ss64.com/bash/syntax-keyboard.html
答案4
该history
命令将显示所有命令及其相关编号。如果您只想在执行命令行 #135 之前进行快速检查,您可以输入:
echo !135
这将向您显示将要执行的操作。