Shell

連結時檢索最後一個命令

  • May 31, 2022

使用;,&&和連結 zsh 中的命令時||,如何訪問鏈中的上一個命令(之前正在執行的命令)?例子:

rm foo ; echo ...

代替點,我正在尋找某種命令/變數來為我提供rm foo.

我嘗試過使用historyand !!,但那些只提供命令直到最後執行的命令,而不是目前的命令。另一個想法是使用$0,但這只會列印 zsh 的位置。

如果無法僅檢索最後一個命令,則訪問完整的鏈也可以。

您可以執行以下操作:

$ 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
)

引用自:https://unix.stackexchange.com/questions/704462