概述
在Linux中,history 命令用于显示和操作Bash shell的历史记录。它允许用户查看他们之前输入的命令,并可以重新调用这些命令,从而提高效率。以下是一些常用的 history 命令用法:
查看历史记录:
只需输入 history 命令,就可以查看当前会话中输入的所有命令的历史记录。
使用特定数字执行命令:
可以通过输入 !number 来执行历史记录中的第 number 条命令。例如,!123 将执行历史记录中的第123条命令。
使用部分命令执行:
输入 !command 可以执行最后一条以 command 开头的命令。例如,!ls 将执行最后一次以 ls 开头的命令。
使用特定字符串执行命令:
输入 !?string 可以执行最后一条包含 string 的命令。例如,!?file 将执行最后一次包含 file 的命令。
修改历史记录中的命令:
使用 fc 命令可以编辑历史记录中的命令。例如,fc 123 将调用默认文本编辑器来编辑第123条命令。
清除历史记录:
输入 history -c 将清除当前会话的历史记录。
保存历史记录:
Bash默认会将历史记录保存在 ~/.bash_history 文件中。可以使用 history -w 命令强制写入当前会话的历史记录到该文件。
设置历史记录大小:
可以通过 HISTSIZE 和 HISTFILESIZE 环境变量来设置历史记录的大小。例如,export HISTSIZE=1000 将设置历史记录的条目数为1000。
搜索历史记录:
使用 Ctrl + R 可以进行历史记录的搜索。输入部分命令,然后按 Ctrl + R,Bash会逐步显示匹配的历史命令。
这些 history 命令的用法可以帮助用户更有效地管理和使用他们的命令行历史记录。
实践
查看历史记录
可见,输入 history 命令并执行后,输出了所有命令的历史记录,附带有编号,是从 1 开始编号的。
history 命令即为输出历史执行的命令及其编号(顺序)。
使用特定数字执行命令
在第 297 条历史记录中,展示了 ls -l 命令的历史记录。
我们现在输入 !297 后在终端执行:
可见,命令被正确执行了。在某种角度来说,使用 !num 的方式可以复用历史执行的命令,对于需要输入较长的命令来说,可以提高我们操作的效率。
!num 即为执行命令历史记录中指定编号(num)的命令。
使用部分命令执行
如上图所示,我们现在有上述的命令历史执行记录。其中有两条 ls 命令,我们现在执行 !ls 命令,看看其效果如何:
可见,执行 !ls 后,输出的内容是符合 ls -lt 命令的结果(以时间降序排序)。
!command 命令即为执行某条命令(command)在历史记录中,最后一次执行的命令。
使用特定字符串执行命令
现有下图所示的历史记录:
我们现在使用 !?string 命令匹配 ls 命令,即输入 !?ls 命令后执行,依照期望,应当是匹配到 ls 命令的最后一次执行记录并执行:
可见,匹配成功。此处的 ? 匹配方式是依照正常表达式的规则进行匹配的,感兴趣的读者可以尝试使用 * 等符号进行匹配并执行命令。
?!string 即为依照字符串 string 与匹配规则 !(可以是其它的符号,例如:*)匹配某个命令的最后一次执行记录并执行。
修改历史记录中的命令
当下,我们有下图所示的命令的历史执行记录:
我们现在考虑将第 334 条命令 clear 修改成 env,即先执行 fc 334:
如图,执行 fc 334 后弹出了 nano 编辑器界面,即现在可以直接修改其中的命令了。
我们修改成:env 。修改完成后保存离开编辑器。
离开编辑器后就立刻自动执行了 env 命令输出了相应的内容。
清除历史记录
当下我们有以下命令执行的历史记录:
我们现在执行 history -c:
可见,执行完 history -c 命令后,所有的历史记录都被清空了。
保存历史记录
当下有以下历史记录:
我们现在执行 history -w,然后执行 cat ~/.bash_history 命令查看/验证文件中的内容是否有历史记录:
可见,-w 选项是保存历史记录的。
设置历史记录大小
我们先将历史记录设置成只能输入 3 条,即执行 export HISTSIZE=3,然后执行 history 验证结果:
可见,历史记录确实只有 3 条了。
搜索历史记录
先尝试输入字母 l 后,按下快捷键 crtl + r,会出现以下命令行界面:
再次输入 s 后:
bash 匹配到了最后一次执行的 ls 命令,按下回车后就会执行:
领取专属 10元无门槛券
私享最新 技术干货