本文来自依云's Blog,转载请注明。
关于历史记录,zsh 有很多选项。我的配置是:
HISTFILE=~/.histfile HISTSIZE=10000 SAVEHIST=10000 # 不保留重复的历史记录项 setopt hist_ignore_all_dups # 在命令前添加空格,不将此命令添加到记录文件中 setopt hist_ignore_space # zsh 4.3.6 doesn't have this option setopt hist_fcntl_lock 2>/dev/null setopt hist_reduce_blanks
最多保留一万行不重复的历史记录。对其的读取和保存没做额外的配置,因此 zsh 会在启动时读取一次,在退出时保存一次。这样,如果同时开了多个 zsh,它们不会共享启动后的历史记录项,因为还没有写到文件中去。
其实是有选项来方便在多个 zsh 中及时共享历史记录的:
setopt SHARE_HISTORY
但是这样的话,每次显示提示符时 zsh 均会读取一次历史记录,而每当新的历史记录产生时 zsh 都会写入一次。磁盘 I/O 太频繁了,我不喜欢。我只需要在我想的时候,能够手动保存和读取历史记录就可以了。读过长长的文档,发现fc
可以做到这点:
# 读取历史记录 fc -IR # 保存历史记录 fc -IA
-I
表示「incremental」,只有新的项目被处理。-R
是读取,而-A
是写入。千万不要用-IW
,这样会丢失原有的历史记录。
Jul 05, 2013 09:42:53 AM
曾几何时,我也向往过zsh, 后来考虑到,更换zsh成本有点高... 就有忍住了...
Jul 05, 2013 01:01:41 PM
没觉得有多少成本呀。你现在用的是什么 shell?bash?
Jul 07, 2013 11:49:43 PM
# 读取历史记录
fc -IR
# 保存历史记录
fc -IA
这个bash用不了:(
bash: fc: -I: 无效选项
Jul 08, 2013 02:55:21 PM
是吖, 用的bash... 如果换zsh, 更改习惯是一个不小的成本呢..
Jul 08, 2013 05:53:51 PM
说了是 zsh 的命令啦。
Jul 27, 2013 02:57:36 PM
我的做法是把历史文件扔到 ~/.shellhistory/ 目录下,然后用asd把这个目录扔到内存里~
Nov 12, 2013 04:43:42 PM
就找这个呢,多终端共享历史很烦人