使用 [!set] zsh 时调用历史扩展

urb*_*ben 1 zsh

当我搜索文件时

ls [a-t]est.txt
Run Code Online (Sandbox Code Playgroud)

它给出了test.txt预期的结果

但是,当我使用

ls [!a-g]est.txt
Run Code Online (Sandbox Code Playgroud)

输出是 ls [aptg]est.txt

[!set] 的一些其他示例:

  • ls [!b-z]est.txt 返回 [bbz]est.txt
  • ls [!g-h]est.txt 返回 ls [git clone --depth=1h]est.txt

我的 zsh 有问题,还是 [!set] 在 zsh 中的工作方式不同?


机器是 Linux Mint 18.2

urb*_*ben 5

正如 steeldriver 所提议的,^代替make ![!set] 解决了这个问题。

这样做的原因是在 zsh 中!触发了历史扩展。如果您不希望发生这种情况,请禁用历史扩展。为此,请setopt nobanghist在命令行中执行。