zsh で ? と [] のグロブを完全に無効にする

zsh で ? と [] のグロブを完全に無効にする

zsh は bash にいくつかの追加のグロブ ロジックを追加します。

$ zsh
$ echo foo[]
zsh: no matches found: foo[]
$ echo bar?
zsh: no matches found: bar?

$ bash
$ echo f[]
f[]
$ echo bar?
bar?

どちらも私にとっては役に立たず、URL のコピーや入力などが面倒になります。

これを完全に無効にしたいのですが、まだその方法が見つかりません。

不完全な解決策がいくつかあります。

  • setopt NO_NOMATCH

これは、あなたのglobが誤ってする一致、例えば:

$ echo README.m?
README.md
  • 引用符を追加する

これは機能しますが、オンラインでスニペットをコピーして貼り付ける場合には機能せず、入力時に覚えておく必要のある余分な手順が追加されます。

  • url-quote-magic自動的に脱出するために使用する

これはCLI/履歴を汚染し、貼り付けにのみ機能します

答え1

?Bashでもワイルドカードです違いは、Zsh では一致に失敗するとエラーが発生するのに対し、Bash では何も表示されずに無視されるため発生します。

Zsh で Bash の動作を実現するには、~/.zshrcファイルに以下を追加します。

unsetopt NOMATCH

しかし、私は実際にお勧めしますないオフにしてください。エラーを黙って無視するのは良いことではなく、破壊的な操作を実行するときには危険になることもあります。

このシェルオプションの詳細については、http://zsh.sourceforge.net/Doc/Release/Options.html

関連情報