我想在 zsh 中創建一個別名,運行我的最後一個以node
.我可以使用 運行該命令!?node
,但無法使用 來建立別名alias N='!?node'
。我怎麼才能創建這個別名?
答案1
歷史擴展是在命令列上執行的前別名擴充。因此,將歷史擴展放入別名中是行不通的,因為在別名擴展後,不再執行歷史擴展。
另一方面,執行參數擴展後別名擴充。所以,你可以用這個來代替:
alias N='"${(z)history[(r)node *]}"'
(r)
取得該模式後第一次出現的位置。在這種情況下,它將檢索最近的匹配歷史記錄項,因為$history
總是從最新到最舊排序。(z)
將字串解析為程式碼並傳回結果 shell 單詞。否則,整個擴展將被視為單字。- 為了正確解析空格,
"
雙引號是必要的。"
否則,它將被視為單字分隔符,從而導致語法錯誤。 '
單引號對於'
防止在聲明時立即執行參數擴展是必要的。