Skip to content
Latchkey

wildcardとは何か?shellのパターン文字

wildcardは、shellがファイル名を一致させるときに、1つ以上の他の文字を表す*や?のような特殊文字です。

wildcardはshellパターンの構成要素です。何にでも一致するアスタリスク、1文字に一致する疑問符、これらによって各ファイルを名指しせずに一度に多くのファイルを参照できます。CIスクリプトはwildcardを使ってbuildの出力、テストファイル、logを選択するため、ルールを知っておくと驚きを避けられます。

wildcardとは何か

wildcardは、shellがファイル名展開中に特別に解釈するplaceholder文字です。リテラルの記号に一致するのではなく、何らかの文字のセットを表します。

主なwildcard

  • *は、何もない場合を含め、任意の文字の並びに一致します。
  • ?はちょうど1文字に一致します。
  • [...]は角括弧内に列挙された任意の1文字に一致します。
  • [!...]は列挙されていない任意の1文字に一致します。

wildcardとglobbing

wildcardは文字であり、globbingはそれらから構築されたパターンをファイル名に展開するプロセスです。この2つの用語は密接に関連しており、人々はしばしばそれらを同じ意味で使います。

wildcardが適用されないとき

クォート内では、wildcardは特別な意味を失い、リテラルとして扱われます。"*.js"はパターンではなく2文字の文字列であり、これはパターンを別のツールに渡したいときに重要です。

CIにおけるwildcard

coverage/*.xmlをuploadするworkflowは、shellまたはactionがwildcardを展開することに依存します。(pathフィルタのように)shellではなくツールがそれを展開すべき場合、shellがそれをそのままにするようクォートする必要があるかもしれません。

マネージドrunnerでのファイル一致

Latchkeyのrunnerでは、wildcardは任意のLinux shellと同じように動作します。test runnerのようなツールにパターン自体を処理させたいときは、shellが先に展開しないようにクォートしてください。

重要なポイント

  • wildcardは、パターン内で他の文字を表す*や?のような文字です。
  • wildcardはshellのファイル名展開であるglobbingを駆動します。
  • パターンをクォートすると、shellがwildcardを展開しなくなります。

関連ガイド