Zsh
在 shell 擴展中找不到事件
$ touch fux fax fix $ ls f[!a]x zsh: event not found: a]x
我想看到 fix 和 fux 作為輸出,而不是傳真。
我想知道這個問題背後的確切原因。這個特殊問題是否與程式碼有關?
來自 OP 的評論解釋說,他們希望匹配除
fax
.這可以通過
shopt -s extglob
(請參閱從全域匹配中排除一種模式)$ touch fix fax fux $ shopt -s extglob $ ls f!(a)x fix fux
不需要
extglob
設置的來自 Giles 的替代答案(下面的評論):$ ls f[^a]x fix fux
我的原始答案文本如下。這個答案是在他試圖在他的答案中使用驚嘆號的假設下寫的。在從 OP 對我的答案的評論中了解了什麼之後,我對其進行了審查並添加了他在上面尋找的答案。
代表歷史
!
查找。請參閱不能在 bash 中使用驚嘆號 (!)?您的 shell 將查找最後一個以以下命令開頭的命令:a]x
但是沒有以 . 開頭的命令
a]x
。嘗試轉義驚嘆號:
$ touch fix fax fux $ ls f[\!a]x fix fux