充分利用bash历史记录—一个彻底、快速的解决方案

充分利用bash历史记录—一个彻底、快速的解决方案,bash,history,Bash,History,我完全依赖ctrl-r来重现我在命令行上所做的许多事情。如果我记得我过去使用过的任何命令的任何部分,我可以通过键入ctrl-r并键入我记得的命令部分来调出旧命令 不久前,我很沮丧,每次关闭终端会话都会丢失历史记录,因此我在.bashrc中添加了以下命令: 一旦我这样做了,我发现我的生活是完全愉快的,从几年前的一个时刻通知拉命令。然而,正如你所想象的,几年后,我的终端开始减速。每次输入命令时,我都需要等待大型历史记录的更新。我现在的处境是,每次打字都要等上一秒钟,这有点太烦人了 有没有人对如何维护

我完全依赖ctrl-r来重现我在命令行上所做的许多事情。如果我记得我过去使用过的任何命令的任何部分,我可以通过键入ctrl-r并键入我记得的命令部分来调出旧命令

不久前,我很沮丧,每次关闭终端会话都会丢失历史记录,因此我在.bashrc中添加了以下命令:

一旦我这样做了,我发现我的生活是完全愉快的,从几年前的一个时刻通知拉命令。然而,正如你所想象的,几年后,我的终端开始减速。每次输入命令时,我都需要等待大型历史记录的更新。我现在的处境是,每次打字都要等上一秒钟,这有点太烦人了


有没有人对如何维护一个完整的可搜索历史记录,而不经历每次命令后进行历史记录更新所造成的延迟有什么建议?

为自己保存一系列提示和技巧可能会更好。在home dir中创建一个名为~/.notes/或类似的目录,并在学习新内容时在其中添加一些文件

~/.notes/bash\u技巧

~/.notes/ssh

你可以用任何你喜欢的方法,把它们涂成焦油,永远保存下来。Dropbox,thumb drive,随便什么


如果您每隔几天查看一次您的历史记录以获得灵感,您可能会缩小它的大小并获得您想要的性能。

可能会制作一个组合键以重新加载文件。根据我的经验,我很少需要从一个终端到另一个终端的命令,因为通常我会将它们用于不同的事情。我认为在PROMPT_命令中不需要history-r。您的shell在启动时读取历史文件,此时history-a应足以使内存中的列表保持最新,直到您在退出shell时写入磁盘。我删除了history-r,我需要调整它,因为我经常从一个shell跳到另一个shell,连接到不同的计算机以运行相同的命令。然而,我确实发现速度有了显著的提高。其次,我发现如上所述使用'export-PROMPT\u COMMAND=`会导致PROMPT\u COMMAND=history-a;历史-r;历史-a;历史-r;。将其修复为只运行一次历史记录命令也大大加快了速度。
export HISTIGNORE=lst::top:ssh*:cd*  # don't put these in history
export HISTCONTROL=erasedups    # no duplicate entries
export HISTSIZE=50000           # big big history
shopt -s histappend             # append to history, don't overwrite it
# Save and reload the history after each command finishes
export PROMPT_COMMAND="history -a; history -r; $PROMPT_COMMAND"
* seq outputs a list of numbers
  seq 5 --> 1 2 3 4 5
  seq 5 10 --> 5 6 7 8 9 10
* Make an ssh key using ssh-keygen