zsh的历史太短了

时间:2014-11-10 15:07:39

标签: zsh history

当我在Bash中运行history时,我得到了大量的结果(1000+)。但是,当我运行history zsh shell时,我只得到15个结果。这使得在zsh中的grepping历史大多无用。 我的.zshrc文件包含以下行:

HISTFILE=~/.zhistory
HISTSIZE=SAVEHIST=10000
setopt sharehistory
setopt extendedhistory

如何修复zsh以使我的shell历史记录更有用?


更新

如果在zsh中我拨打history 1,我会获得所有历史记录,就像我在Bash中使用history一样。我可以使用别名命令来获得相同的结果,但我想知道为什么history在zsh和Bash中表现不同。

3 个答案:

答案 0 :(得分:14)

OP已在问题更新中说明了答案: historybash中的行为与zsh 中的行为不同:

简而言之:

  • 的zsh
    • history仅列出 15个最新历史记录条目
    • history 1列出所有 - 见下文。
  • 的bash
    • history列出所有历史记录条目。

遗憾的是,将数字操作数传递给history的行为也不同:

  • 的zsh
    • history <n>会显示<n> 开头的所有条目 - 因此,history 1会显示所有条目。
    • history -<n> - 请注意- - 显示 <n>最新条目,因此默认行为实际为history -15
  • 的bash
    • history <n>显示 <n>最近条目。
    • (bash history不支持从列出条目号;您可以使用fc -l <n>,但必须存在特定条目<n> ,否则命令失败 - 见下文。)

可选背景信息:

  • 在zsh中,history实际上(实际上)不是fc -l的别名:请参阅man zshbuiltins
    • 有关许多与历史记录相关的功能,请参阅man zshall
  • 在bash中,history是它自己的命令,其语法与fc -l不同
    • 请参阅:man bash
  • bash和zsh都支持fc -l <fromNum> [<toNum>]列出历史条目的给定范围
    • bash:必须存在特定条目<fromNum>
    • zsh:命令成功,只要至少有1个条目属于(显式或隐含)范围。
    • 因此,fc -l 1在zsh中工作以返回所有历史条目,而在bash中它通常不会,因为条目#1通常不再存在(但如上所述,您可以使用{{1}没有参数列出bash中的所有条目。

答案 1 :(得分:5)

#set history size
export HISTSIZE=10000
#save history after logout
export SAVEHIST=10000
#history file
export HISTFILE=~/.zhistory
#append into history file
setopt INC_APPEND_HISTORY
#save only one command if 2 common are same and consistent
setopt HIST_IGNORE_DUPS
#add timestamp for each entry
setopt EXTENDED_HISTORY   

这是我的设置,它可以正常工作

答案 2 :(得分:4)

也许晚了,但是遇到这篇文章并尝试应用它,但失败了......所以实际上,把它放在 .zshrc 中:

alias history='history 1'

HIST_SIZE 用完之前,您会看到任何东西。查找我使用的命令(在 .zshrc 更改之后)

history | grep "my_grep_string"