Zsh

在 shell 擴展中找不到事件

  • August 31, 2021
$ 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

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