7
3
2013
7

手动保存/读取 zsh 历史记录

本文来自依云'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,这样会丢失原有的历史记录。

Category: shell | Tags: zsh | Read Count: 19426
eleven.i386 说:
Jul 05, 2013 09:42:53 AM

曾几何时,我也向往过zsh, 后来考虑到,更换zsh成本有点高... 就有忍住了...

Avatar_small
依云 说:
Jul 05, 2013 01:01:41 PM

没觉得有多少成本呀。你现在用的是什么 shell?bash?

zz 说:
Jul 07, 2013 11:49:43 PM

# 读取历史记录
fc -IR
# 保存历史记录
fc -IA

这个bash用不了:(
bash: fc: -I: 无效选项

eleven.i386 说:
Jul 08, 2013 02:55:21 PM

是吖, 用的bash... 如果换zsh, 更改习惯是一个不小的成本呢..

Avatar_small
依云 说:
Jul 08, 2013 05:53:51 PM

说了是 zsh 的命令啦。

chliny 说:
Jul 27, 2013 02:57:36 PM

我的做法是把历史文件扔到 ~/.shellhistory/ 目录下,然后用asd把这个目录扔到内存里~

donie 说:
Nov 12, 2013 04:43:42 PM

就找这个呢,多终端共享历史很烦人


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

| Theme: Aeros 2.0 by TheBuckmaker.com