链接时检索最后一个命令

链接时检索最后一个命令

;当使用,&&和链接 zsh 中的命令时||,如何访问链中的上一个命令(之前正在执行的命令)?例子:

rm foo ; echo ...

我正在寻找某种为我提供rm foo.

我尝试过使用history!!,但它们只提供直到最后执行的命令为止的命令,而不是当前执行的命令。另一个想法是使用$0,但这只会打印 zsh 的位置。

如果无法仅检索最后一个命令,则访问完整的链也可以。

答案1

你可以这样做:

$ TRAPDEBUG() last_command=$current_command current_command=$ZSH_DEBUG_CMD
$ echo test; print -r -- $last_command
test
echo test

请注意,命令将进行一些重新格式化:

$ (echo test); print -r -- $last_command
test
(
        echo test
)
$ (for a (1 2) echo $a); print -r -- $last_command
1
2
(
        for a in 1 2
        do
                echo $a
        done
)

相关内容