![使用 zsh 中的 History 命令显示较旧或较新的历史记录项目](https://linux22.com/image/41501/%E4%BD%BF%E7%94%A8%20zsh%20%E4%B8%AD%E7%9A%84%20History%20%E5%91%BD%E4%BB%A4%E6%98%BE%E7%A4%BA%E8%BE%83%E6%97%A7%E6%88%96%E8%BE%83%E6%96%B0%E7%9A%84%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%E9%A1%B9%E7%9B%AE.png)
我输入了历史命令,它显示了我执行的最后 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 -20
which 不起作用,所以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
首先要知道,在zsh
,history
意思fc -l
。
然后阅读男人 zshbuiltins,有关命令的部分fc
:
从以下位置选择一系列命令从第一个到最后一个从历史列表中。 参数first 和last 可以指定为数字或字符串。负数用作当前历史事件编号的偏移量。字符串指定以给定字符串开头的最新事件。然后对命令执行所有替换 old=new(如果有)。
...
如果未指定first,它将被设置为-1(最近的事件),或者如果给出-l 标志则设置为-16。如果没有指定last,它将被设置为first,或者如果给出-l标志则设置为-1。
正如文档所说,如果使用负数,则它是当前历史记录的偏移量。因此history -20
列出从当前到之前 20 个命令的命令。
如果您提供一个数字history 20
,zsh
则认为它是first to last
表格。在本例中,first
设置为 20,但last
被省略。所以last
设置为-1
因为fc -l
被使用。