zshがすべてを拡張しようとするのを防ぐ


7

最近、bashから切り替えzshて、ワイルドカードが含まれているように見えるすべてのコマンドまたは引数を展開しようとすることに気付きました。したがって、次の行はもう機能しません。

git diff master{,^^}
zsh: no matches found: master^^

scp remote:~/*.txt .
zsh: no matches found: remote:~/*.txt

上記のコマンドを機能させる唯一の方法は、引数を引用することです。これは非常に面倒です。

Q:zshワイルドカードを展開するように設定する方法はありますが、一致するものがない場合は、引数をそのまま渡しますか?

編集:おそらく関連:zshでscp:一致が見つかりません

回答:


6

これはzshの意図された機能です。シェルを使用する場合シェルに対してメタ文字と見なされる文字を引用するのがベストプラクティスと見なされます。^オプションextendedglobが設定されているときに文字列を無効にするために使用されるパターンです。*0個以上の文字と一致するために使用されるパターンです。

オプションを無効にすることで停止できますnomatch。ただし、そうすることで、現在の作業ディレクトリに存在する可能性のあるファイルに応じて、引用符で囲まれていないパターンによってステートメントが揮発性になります。あなたはそれをするべきではありません。


たぶん私はすべきではありませんが、そうすることは非常に魅力的です。以前は、エイリアスをたくさん持つべきではないと考えていました。しかし、最終的に重要なのは、マシンでコマンドを入力するのにどれだけ時間がかかるかです。
アッティラO.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.