如何告诉Zsh将当前shell的历史记录写入我的历史文件?

时间:2009-05-09 00:09:32

标签: shell zsh

我在一个有大量工具需要大量选择的地方工作,所以我非常依赖我的shell的历史。我甚至不时地支持它,以确保我不会丢失有用的,冗长的命令。

我只是键入了其中一个命令,我想确保它已刷新到历史文件,但我在后台有一个长时间运行的作业,我无法键入exec zsh。在这种情况下我还能做些什么吗?

(当然,我可以将其复制并粘贴到文件中,但是存在flush-history命令更合乎逻辑。)

5 个答案:

答案 0 :(得分:29)

要将shell历史记录写入历史记录文件,请执行

fc -W

fc有一些有用的标记,请在man zshbuiltins中查看所有标记。

通过说setopt -o sharehistory,您还可以在每个命令之后完全自动化读取和写入历史文件(从而自动与每个正在运行的zsh共享历史文件)。在man zshoptions中阅读更多与历史相关的选项。

答案 1 :(得分:14)

我也刚刚发现:

setopt INC_APPEND_HISTORY

来自man zshoptions

INC_APPEND_HISTORY
   This  options  works like APPEND_HISTORY except that new history
   lines are added to the $HISTFILE incrementally (as soon as  they
   are  entered),  rather  than waiting until the shell exits.  The
   file will still be periodically re-written to trim it  when  the
   number  of  lines grows 20% beyond the value specified by $SAVE-
   HIST (see also the HIST_SAVE_BY_COPY option).

答案 2 :(得分:13)

并使用

fc -R

在现有的zsh shell中读取历史记录(写完之后)。

答案 3 :(得分:0)

appen下面的〜/ .zshrc,它将通过改变HISTSIZE和SAVEHIST的值来保存我们增加的1000个条目

HISTSIZE=1000
if (( ! EUID )); then
  HISTFILE=~/.zsh_history_root
else
  HISTFILE=~/.zsh_history
fi
SAVEHIST=1000

答案 4 :(得分:0)

要将 shell 历史记录附加到历史文件而不是覆盖它,请执行

fc -IA