history 简介

linux 命令行工具 history 保存了过往使用过的命令, 最简单的用法, 就是在终端中输入 history.

1
  history

上面这个清单显示的数量, 由$HISTSIZE 决定. 比如显示 500 条记录, 可以这样设置:

1
  HISTSIZE = 500

如果只想显示最后六条数据, 可以这样:

1
  history 6

这种用法, 只在 bash 中有效, 现在还没有发现在 zsh 中如何配置. 不过, 可以结合 tail 命令一起使用, 达到同样效果.

1
  history | tail -n 6

搜索命令的历史记录

有很多办法搜索命令的历史记录, 结合 “grep” 是其中之一.

使用 “grep”

1
  history | grep "alias"

使用 Ctrl + R 快捷键

一个更方便的办法是使用组合键 “Ctrl + R”. 这个组合键会从最后的记录开始逆序显示所有的历史记录, 并随着继续输入关键字, 过滤显示的清单. 在找到目标之后, 简单回车, 就可以执行了. 这是它优于结合 “grep” 的地方.

使用 ! 命令

另外还有一个直接运行命令的方法, 就是在 ! 后输入记录号. 比如

1
  !364

可以通过 “!!” 或者 “!-1” 来重复运行上一条命令, 在忘记输入 “sudo” 时就非常有效.

还可以通过 “!” 加首字母的方法, 调出最近使用过的一条命令. 比如:

更正前一条命令:

可以通过 ^foo^bar 修改前一条命令, 并再次执行. 例如:

1
2
  sodu mkdir demo
  ^sudo^sodu

这个方法在输入错误和更改长命令的时候, 特别高效.

复用上一条命令的参数

通过 “!$” 和 “!*” 可以把上一条命令的所有参数, 传递到最新一条命令中, 比如:

1
2
  batcat chdir.sh
  vim !$

第二句中的 “!$” 就代表前一条命令中最后的参数 “chdir.sh” 如果参数不止一个, 就用 “!*”

清除历史记录

有时出于某种考虑, 要清除掉历史记录的全部或一部分, 可以用 “-c” 或者 “-d”

1
  history -c

这条命令清除所有的历史记录.

1
  history -d 380 376

这条命令清除编号从 376 起, 到 380 止的记录.

原文在此