ZSH Globbing 構文の説明

ZSH Globbing 構文の説明

フォルダdotfilesのすべての内容を~gitリポジトリにコピーしてバックアップしたいのですがZSH

うまくいくような次のコマンドが見つかりました。

cp -a ~/.[^.]* .決勝戦はどこですか? gitディレクトリです。

私はこれがどのように機能するのか理解していません。誰かが私にガイドを提供したり、詳細については、Googleに何を探すべきかを教えてもらえますか?

頑張ったZSH + [^] + globbing

ベストアンサー1

この構文は一部のシェルで動作します。その他そこでもzshそれは間違っています。

.[^.]*文字以外のゼロ個以上の文字が、次の.ファイル名と一致します。.

.これは..拡張子を含むシェルに必要な構文です.*

...現在のディレクトリと親ディレクトリをそれぞれ参照するためのナビゲーションツールです。 globは実際のファイルリストを生成するツールなので、glob拡張には使用できません。それにもかかわらず、歴史的に、シェルは報告されているように、グローバル拡張にこれを含めましたreaddir()

zsh、Forsythシェルとその子孫(pdksh、mksh、OpenBSD sh ...)、またはシェルはfish問題を解決し、結果に.Norを含めません。..ファイル名の生成²、次のグローバル変数の場合でも:

$ echo (.|..)
zsh: no matches found: (.|..)

のようなものを失うので、一般的な場合でも間違っています..foobar

また、[^.]多くのシェルがこれをサポートしていますが、標準のPOSIX構文ではありません。

POSIXsh構文には次のものが必要です。

cp -a ~/.[!.]* ~/..?* .

..?*(一致するものを追加して..から一つ上記のファイル名タイプを含む文字数以上..foobar)。

zsh(および上記の他のシェル)には、次のものが必要です。

cp -a ~/.* .

希望、結局、POSIXではshに対して許可/推奨されます。我々は、他の多くの殻が続くのを見るでしょう。


1 歴史的記録と伝説によると、.名前が次のように始まるファイルの概念は次のとおりです。隠された1970年代、このユーティリティの初期バージョンのバグが原因で発生し、その結果、lsすべてのファイル名が 。このバグは、人々がファイルを隠すためにこのバグに依存し始めたときに機能しました。....

² Bashはglobskipdotsバージョン5.2でオプションを追加しました。

おすすめ記事