Shell
在部分搜尋中列印而不執行 zsh 歷史擴展的結果
我可以做:
!systemctl:p``systemctl reload bind
列印結果(作為歷史中以字元串開頭的最後一個命令)systemctl
。但對命令歷史記錄的部分搜尋執行相同的操作:
!?reload:p
結果是zsh: no such event: reload:p
前者查找歷史中以字元串開頭的最新事件
systemctl
並將其列印在螢幕上,這要歸功於:p
修飾符,而不是執行。我認為在任何外殼上
:p
也是如此。!?
並且bash也會導致
bash: !?reload:p: event not found
.如何在常見的 unix shell 中實現部分命令歷史搜尋中找到的命令行的列印和不執行?
根據手冊(強調我的):
!?str[?]
請參閱包含 的最新命令
str
。尾隨的“?” 如果此引用後面要跟一個修飾符或後面跟任何不屬於str
.所以在你的情況下
!?reload?:p
也就是說,您需要
?
在搜尋字元串之後添加一個尾隨。