使用 zsh 中的 History 命令显示较旧或较新的历史记录项目

使用 zsh 中的 History 命令显示较旧或较新的历史记录项目

我输入了历史命令,它显示了我执行的最后 10 个命令。现在我想查看我执行的最后 20 个命令(阅读文档后):

n 参数仅列出最后 n 行。

我输入了history 20.这向我展示了从命令号 20 开始到当前命令(大约 2000)的所有命令。所以我尝试了, history -20 这有效。它显示了最后 20 个命令。但这不是文档中所说的。

history -d [offset]应该删除该偏移量上的命令。即使这样在我的 zsh 中也不起作用。

这是直接来自我的 zsh shell 的: 在此输入图像描述

答案1

在 zsh 中,history是 的别名fc -l 1,所以当你这样做时,history -20它会被替换为fc -l 1 -20which 不起作用,所以fc直接使用:

➜  ~  fc -l -20
10095  grep -R PAPER /usr/lib/locale/
10096  man locale
10097  man 7 locale
10098  mc
10099  history
10100  history --help
10101  run-help history
10102  history 20
10103  history 1 20
10104  history -l 20
10105  fc
10106  history -l 20
10107  type history
10108  fc -l ..20
10109  fc -l -20
10110  history -l -20
10111  history -20
10112  fc -l -20
10113  type history
10114  fc -l 1 -20

你会没事的。

答案2

首先要知道,在zshhistory意思fc -l

然后阅读男人 zshbuiltins,有关命令的部分fc

从以下位置选择一系列命令从第一个到最后一个从历史列表中。 参数first 和last 可以指定为数字或字符串。负数用作当前历史事件编号的偏移量。字符串指定以给定字符串开头的最新事件。然后对命令执行所有替换 old=new(如果有)。

...

如果未指定first,它将被设置为-1(最近的事件),或者如果给出-l 标志则设置为-16。如果没有指定last,它将被设置为first,或者如果给出-l标志则设置为-1

正如文档所说,如果使用负数,则它是当前历史记录的偏移量。因此history -20列出从当前到之前 20 个命令的命令。

如果您提供一个数字history 20zsh则认为它是first to last表格。在本例中,first设置为 20,但last被省略。所以last设置为-1因为fc -l被使用。

相关内容