访问Zsh中的最后一个命令(不是上一个命令行)

 杜伟丿2552 发布于 2022-12-28 13:38

有没有办法在Zsh中检索最后一个命令的文本?我的意思是最后执行的命令,而不是最后一个命令行。

尝试了什么

为了做到这一点,我发现Zsh和Bash处理历史记录之间存在细微的区别。以下示例暴露了这种差异,这是我在Bash中所做的基础,而在Zsh中则无效。

$ zsh
$ echo "This is command #1"
> This is command #1
$ echo "This is command #2"; echo $(history | tail -n1)
> This is command #2
> 3807 echo "This is command #1"

$ bash
$ echo "This is command #1"
> This is command #1
$ echo "This is command #2"; echo $(history | tail -n1)
> This is command #2
> 4970 echo "This is command #2"; echo $(history | tail -n1)

相同的测试,其结果在最后一行有所不同。Bash 在执行之前将命令行添加到历史记录中(我不知道它是否按规范执行),而Zsh似乎在执行之后将命令行添加到历史记录中(相同,我不知道它是否按规范执行) ),因此history | tail -n1不相同。

我想要的是echo "This is command #2"即使在与其他命令位于同一命令行的情况下(当多个命令用分隔时;),也能够检索到前一条命令的文本。

使用bash时,我可以使用history | tail -n1 | sed ...,但由于历史记录处理方面的差异,因此Zsh不能再使用了。

需要实现的目标

关于如何从Zsh中的多命令行命令行获取最后一条命令的任何想法吗?

当命令需要知道上一条命令是什么时,无论该命令在同一行还是在上一行,我都需要它。另一种说法是:我需要访问单个面向命令的历史记录的最后一项,而不是面向行的命令的历史记录的最后一项。

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有