;
当使用,&&
和链接 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
)