有没有办法在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中的多命令行命令行获取最后一条命令的任何想法吗?
当命令需要知道上一条命令是什么时,无论该命令在同一行还是在上一行,我都需要它。另一种说法是:我需要访问单个面向命令的历史记录的最后一项,而不是面向行的命令的历史记录的最后一项。