シェルグローバルパターンテスト
ガイド
シェルグローバルパターンテスト
ファイルパスのリストに対してグローバルパターンをテストし、正確にどのパスがマッチするかをリアルタイムで確認できます — Bash、Zsh、.gitignore、Python、Goのセマンティクスを含みます。 fnmatch、およびGo path.Match. パターンをタイプしてください src/**/*.{js,ts}、パスを貼り付け、タイプするたびにマッチは緑でハイライトされ、非マッチは色が薄れていきます。
使用方法
- [globパターン]フィールドにグローバルパターンを入力してください(例 グローバルパターン — 同じパターンがBash、.gitignore、Python
**/*.log). - [表示モード]を選択してください シェル / モード 、またはGoで異なるパスセットにマッチする可能性があります。
fnmatch。 - あなたの ファイルパス 1行ごとに — または組み込みの例をクリックしてください。
- マッチは緑色でチェックアイコン付きでハイライトされ、非マッチは灰色のままです。要約はカウントと選択したモードに関するノートを表示します。
- パターンの前に
!を付けるとマッチを反転(マッチしないパスが緑でハイライトされます)します。 ない 。
機能
- 5つのシェルモード — Bash(globstarあり)、Zsh extended_glob、.gitignore、Python
fnmatch、およびGopath.Match、それぞれが正しいセマンティクスとブレース展開を提供します。*,**,?、およびブレース展開。 - リアルタイムハイライト — パターンをタイプするたびにパスが再評価されます。送信ボタンは必要ありません。
- ブレース展開 –
{a,b,c}BashおよびZshモードでの代替パターン、ネストや交叉積(例src/{js,ts}/**/*.{spec,test}.ts. - 文字クラス –
[abc],[!abc]否定クラスおよび範囲(例[A-Z]. - 否定 — 任意のパターンの前に
!を付けるとマッチを反転します。 - モードノート — 各結果の下に、選択したモードがパターンをどのように解釈するかを説明する短い説明が表示されます。
- クイック例 — ウェブプロジェクトレイアウト、.gitignoreスタイルのログフィルタ、またはドキュメント/Readmeの例を読み込み、視覚的に学習できます。
- クライアントサイドのみ — パターンとパスはブラウザに残り、ロード後はオフラインで動作します。
一般的な使用例
- .gitignoreルールのデバッグ — ファイルパスリストを貼り付け、候補ルールが無視するパスを確認できます。
git status。 - ビルドグローバルパターンの作成 — パターンが
tsc,esbuild、 またはprettier --writeに渡されたときに、期待されるファイルのみがマッチし、それ以外はマッチしないことを確認できます。 - CIパスフィルタの作成 — GitHub ActionsまたはGitLab CIでのフィルタが、プッシュ前に正しいファイルのサブセットをターゲットとしているかを確認できます。
paths:。 - シェルスクリプトの翻訳 — コードをBashからPythonまたはGoサービスに移行した後、パターンが依然として機能しているかを確認できます。
- globセマンティクスの教育 — 学生に、
*がBashではディレクトリ境界を越えないが、Zshでは越えることの理由を具体的に示します。fnmatch.
よくある質問
-
グローバルパターンにおける * と ** の違いは?
1つの
*は、1つのパスセグメント内の任意の文字をマッチしますが、ディレクトリセパレータ(/)を越えません。2つの**(globstar)は、任意の数のディレクトリセグメントを横断して任意の文字をマッチします。したがってsrc/*.jsマッチするsrc/index.jsはsrc/utils/index.jsではありませんが、src/**/*.jsは両方をマッチします。すべてのグローバルダイアレクトが**をサポートしているわけではありません — PythonfnmatchおよびGoは、2つの星を2つの独立したpath.Matchトークンとして扱います。*。 -
グローバルマッチングは正規表現とどう異なりますか?
グローバルは、ファイルパスをマッチするための非常にシンプルなパターン言語です。ほとんどの文字は字面として扱われます:
*,?,[...]、および(一部のシェルで){...}は唯一のメタ文字です。量詞、アンカー、ラウンド、バックリファレンスは存在しません。実装ではグローバルパターンを内部的に正規表現に変換することがありますが、ユーザーは正規表現の概念を意識する必要はありません。グローバルは意図的にシンプルであるため、シェルコマンドラインが短く予測可能になります。 -
なぜブレース展開はすべてのグローバルダイアレクトで機能しないのですか?
ブレース展開(
{a,b,c}を3つの代替に展開)は、BashおよびZshにおいて技術的にはシェルの機能であり、グローバルパターンがマッチされる前に評価されます。シェルはブレース表現を複数の引数に展開し、その結果としてのファイルグローバルが独立してマッチされます。Go、Pythonなどのツールが使用する純粋なグローバルライブラリは、ブレース展開を実装していません。なぜなら、ブレース展開はグローバル言語の一部ではなく、シェルレベルの事前処理ステップであるからです。git(in.gitignore)fnmatch、およびGopath.Match。 -
グローバルパターンの先頭に!があるのはどうですか?
文脈によって意味が変わります。文字クラス内で
[!abc]はクラスを否定します — 任意の1文字をマッチしますが、a,b、 またはcを除きます。パターン全体の先頭に!がある場合、これは.gitignoreの機能であり、以前無視されたパスを再含めます。ほとんどのシェルは、グローバルパターンの先頭に!を処理して否定と見なしません — 代わりにエラーを返す(Zshの履歴展開)またはそのまま通過します。このテストツールでは、先頭の!は便利さのため、マッチを反転してマッチしないパスを緑でハイライトします。
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
