Bash的最大特性之一是history命令,它将用户运行的所有命令存储在主目录(通常情况下是位于/home/$USER/.bash_history)的历史文件中。这使用户可以轻松地调用、编辑和重新运行以前的命令。
在本文中,小编将简单介绍如何从输入shell的历史命令中重新执行特定命令,这有助于避免反复键入相同的命令,可以说是相当的省事。注意,本文介绍的是重新执行某个历史命令,和之前的Linux重复执行命令还是有一定的区别。
众所周知,要获取最近输入运行的命令,可以使用键盘Up
箭头键搜索以前的命令,重复按下显示多个历史命令,这样就可以找到你想要的那个。类似的,使用Down
箭头向相反方向检索命令。
对于输入的历史命令较少,使用Up和Down键比较方便。但是,如果历史文件包含很多条目,那么要从历史命令中重新执行某个特定命令,显示是非常繁琐的。这种情况的话,可以运行history命令,如下所示:
$ history
在上图中可以看到,历史输入命令接近1000+条,使用上下键检索非常麻烦。因此,想要执行某个历史命令的话,只需重新执行命令的编号即可(例如,如果要重新启动PHP-FPM并查看其状态,则只需重新执行!997和!998命令),具体如下图所示:
$ !997 $ !998
除了执行编号之外的方法之外,还可以通过'!'
+该特定命令的前几个字符(如sud或sudo )来重新执行以前使用过的命令 (sudo yum update ),这样可以大大缩减检索范围,能够做到快速定位,非常好用:
$ !sud 或者 $ !sudo
通过执行以上命令之后,直接会重新执行带有“sud”和“sudo”字符串的命令,也就是sudo yum update。如果某些命令相似比较多,那么检索的字符串尽量输入长一些:
需要注意的是,'!'
和编号/命令之间不能有空白字符,否则命令运行将不成功。
就是这样,Bash history记录是一项很不错的功能,可让用户轻松地调用、编辑和重新运行以前的命令。当然,重新执行上次执行的命令还有很多其它方法,但使用起来相对麻烦一些,所以这里就不整理了,感兴趣的小伙伴可以网上搜索找找。