是否可以为“历史记录”命令设置一个固定数字,以仅显示一定数量的历史项(例如 100),而不是从一开始的所有内容?
答案1
history n
仅打印n
历史记录的行。例如:
$ history 4
2000 type history
2001 help
2002 help history
2003 history 4
$
所以我们可以在你的中创建一个别名.bashrc
:
alias h="history 100"
从help history
:
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
Display or manipulate the history list.
Display the history list with line numbers, prefixing each modified
entry with a `*'. An argument of N lists only the last N entries.
如果你想保留大量的历史记录,这很有用,甚至可能是无限一个。 和HISTCONTROL=ignoreboth:erasedups
和反向增量搜索,这是您实际运行命令的特殊场合history
。
答案2
设置HISTFILESIZE
并且HISTSIZE
可以限制历史命令的大小。
例如HISTFILESIZE=100
和HISTSIZE=100
。它将限制历史文件存储 100 行,并将HISTFILE
当前会话命令存储在内存中 100 行。
当 shell 启动时,历史记录将从变量指定的文件HISTFILE
(默认为 ~/.bash_history)中初始化。如有必要,将截断由值指定的文件HISTFILE
,以使其包含的行数不超过变量值指定的行数HISTFILESIZE
。
您可以在文件中添加HISTFILESIZE=100
和。将 100 更改为您想要的数字。HISTSIZE=100
~/.bashrc
解释
HISTFILESIZE=10
和HISTSIZE=10
- 您开始您的会话。
- 您的 HISTFILE(存储 bash 命令历史记录的文件)被截断为包含 HISTFILESIZE=10 行。
- 你写了50行。
- 在您的 50 条命令结束时,只有第 41 至 50 条命令存在于历史列表中,其大小由 HISTSIZE=10 决定。
- 您结束会话。
- 假设
histappend
未启用,命令 41 到 50 将保存到您的 HISTFILE 中,该文件现在包含它在开始时持有的 10 个命令加上 10 个新写入的命令。 - 您的 HISTFILE 被截断为包含 HISTFILESIZE=10 行。
- 假设
- 您的历史记录中现在有 10 条命令 - 您在刚刚完成的会话中输入的最后 10 条命令。
- 当您开始新的会话时,您将从 1 开始,并且 HISTFILE 的 HISTFILESIZE=10。
HISTFILESIZE=10
和HISTSIZE=5
- 您开始您的会话。
- 您的 HISTFILE(存储 bash 命令历史记录的文件)被截断为最多包含 HISTFILESIZE=10 行。
- 你写了50行。
- 在您的 50 条命令结束时,只有第 46 至 50 条命令存在于历史列表中,其大小由 HISTSIZE=5 决定。
- 您结束会话。
- 假设
histappend
未启用,命令 46 到 50 将保存到您的 HISTFILE 中,该文件现在包含它在开始时持有的 10 个命令加上 5 个新写入的命令。 - 您的 HISTFILE 被截断为包含 HISTFILESIZE=10 行。
- 假设
- 您的历史记录中现在有 10 条命令 - 其中 5 条来自之前的会话,最后 5 条是您在刚刚完成的会话中输入的。
- 当您开始新的会话时,您将从 1 开始,并且 HISTFILE 的 HISTFILESIZE=10。
HISTFILESIZE=5
和HISTSIZE=10
- 您开始您的会话。
- 您的 HISTFILE(存储 bash 命令历史记录的文件)被截断为最多包含 HISTFILESIZE=5 行。
- 你写了50行。
- 在您的 50 条命令结束时,只有第 41 至 50 条命令存在于历史列表中,其大小由 HISTSIZE=10 决定。
- 您结束会话。
- 假设
histappend
未启用,命令 41 到 50 将保存到您的 HISTFILE 中,该文件现在包含它在开始时持有的 5 个命令加上 10 个新写入的命令。 - 您的 HISTFILE 被截断为包含 HISTFILESIZE=5 行。
- 假设
- 您的历史记录中现在有 5 条命令 - 您在刚刚完成的会话中输入的最后 5 条命令。
- 当您开始新的会话时,您将从步骤 1 开始,并且 HISTFILESIZE=5。