当我在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中表现不同。
答案 0 :(得分:14)
OP已在问题更新中说明了答案: history
在bash
中的行为与zsh
中的行为不同:
简而言之:
history
仅列出 15个最新历史记录条目history 1
列出所有 - 见下文。history
列出所有历史记录条目。
遗憾的是,将数字操作数传递给history
的行为也不同:
history <n>
会显示以<n>
开头的所有条目 - 因此,history 1
会显示所有条目。history -<n>
- 请注意-
- 显示 <n>
最新条目,因此默认行为实际为history -15
) history <n>
显示 <n>
最近条目。history
不支持从列出条目号;您可以使用fc -l <n>
,但必须存在特定条目<n>
,否则命令失败 - 见下文。)可选背景信息:
history
实际上(实际上)不是fc -l
的别名:请参阅man zshbuiltins
man zshall
history
是它自己的命令,其语法与fc -l
不同
man bash
fc -l <fromNum> [<toNum>]
列出历史条目的给定范围:
<fromNum>
。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"