有没有办法影响 bash 历史的行为?

有没有办法影响 bash 历史的行为?

在终端中,当您搜索已经使用过的命令行时,bash 历史记录通常很有用。但是有没有办法影响 bash 历史记录的行为(即保存哪些命令、保存多长时间、保存多少个命令等等)?

答案1

有几个变量控制着你的历史记录的行为:

  • HISTCONTROL:控制如何将值保存到历史记录中。值ignorespaceignoredupserasedups可以在此处输入(用冒号分隔)。
  • HISTFILE:设置历史文件的位置。
  • HISTFILESIZE:设置历史文件的最大行数。
  • HISTIGNORE:有一个 bash 会忽略的模式列表(参见另一个答案语法)。
  • HISTSIZE:包含实际 shell 中记住的多行内容。
  • HISTTIMEFORMAT:包含一个表达式,表示条目的格式(请参阅其他答案

答案2

设置历史记录的时间戳:

  • 默认情况下,历史记录不附加时间戳,但很容易将其配置为显示时间戳,只需设置一个环境变量即可历史时间格式

    export HISTTIMEFORMAT="%h/%d - %H:%M:%S "

  • 再次执行历史记录以查看结果。 替代文本
  • 如果你不想保存历史记录中的命令,那么

    export HISTSIZE=0

变量:

  • HISTFILE——控制历史文件的保存位置。
  • HISTFILESIZE - 控制在 HISTFILE 中保留多少个历史命令。
  • HISTSIZE——控制在当前会话的历史列表中保留多少个历史命令。
  • HISTIGNORE—控制忽略哪些命令并且不保存到历史列表中。

笔记:

  • 一旦关闭终端,您将丢失设置。因此,如果您希望永久保留它,则应将上述命令添加到~/.bashrc~/.bash_aliases

答案3

您可以添加如下行

export HISTFILESIZE=5000

增加~/.bashrc历史记录的大小。默认情况下,以空格开头的命令不会被保存。这是因为export HISTCONTROL=ignoreboth默认情况下在 ubuntu 中全局启用了该命令。

您还可以忽略以lwhich使用开头的命令

export HISTIGNORE="l*:which*"

答案4

有一种方法可以让历史记录不记住命令:只需以空格开头即可。还有一种非常简单的方法来检索特定命令:键入 CTRL+R 和您要搜索的命令中的一个单词。

当然有一种方法可以增加默认历史记录,默认情况下为 500 行......但我不知道如何,抱歉!

相关内容