有没有办法让历史记录中的某些条目变得“粘性”?

有没有办法让历史记录中的某些条目变得“粘性”?

我经常使用history/这个CtrlR东西,但有时

  • 我经常使用的命令(但显然不够频繁)在我的命令历史阈值之后“消失”,或者

  • 由于系统挂起,我不得不硬重置机器,历史记录变得乱七八糟

现在有没有办法让历史记录中的条目“保留”,这样CtrlR就不依赖于历史记录中出现的特定模式?我可以在 .dotfiles 中的某个地方(例如.bashrc,或历史记录的配置)定义“默认条目”吗?

我知道可以选择将历史阈值设置为无穷大,但我不想这样。

答案1

我过去非常依赖使用CtrlR来回忆以前输入的命令——无论是常用命令还是长而复杂的命令。我遇到的问题与您描述的非常相似。

为了克服这些问题,我修改了我的 Bash 配置,以便当 shell 退出时它会附加到历史文件而不是覆盖它:

shopt -s histappend

但是,如果 shell 没有干净地退出(例如硬重置),我仍然会丢失该会话的历史记录,因此我添加了以下内容以在输入每个命令后保存历史记录。

PROMPT_COMMAND='history -a'

Shell 别名

最终我还是接受了shell 别名这是保存常用命令和那些需要花费时间才能正确执行的长而复杂的命令的最佳方法。只要将它们保存到我的别名文件中,它们就会总是即使多年以后,我仍然能够使用。

我将所有别名存储在其中~/.bash_aliases,然后.bashrc按照 Ubuntu 默认.bashrc提供的建议从我的文件中获取该文件:

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

答案2

不具有粘性,但可以延长其在历史上的生命:

#store not 2k commands but 20k, feel free to increase if needed
export HISTFILESIZE=20000
export HISTSIZE=20000
#don't store duplicates, so save some space too
export HISTCONTROL="ignoredups"

应添加到 .bashrc

是的,别名非常有用。

相关内容