グロブ

グロブ（）とは主にUnix系環境において、ワイルドカードでファイル名のセットを指定するパターンのことである。例えば、UNIXのコマンド「codice_1」はカレントディレクトリからcodice_2ディレクトリへとcodice_3で終わる全てのファイルを移動する。ここで、codice_4は「任意の文字列」を表すワイルドカードであり、codice_5はグロブである。codice_4以外に一般的なワイルドカードは疑問符 (codice_7) であり、これは任意の1文字を表す。
起源.
UNIXの初期バージョン（1969年の「1st」版から1975年の「6th」版まで）におけるコマンドインタプリタでは、コマンドへの引用符で囲まれていない引数内に含まれるワイルドカードの展開は、インタプリタとは独立した codice_8 というプログラムに依存していた。このプログラムが展開を行い、実行するコマンドへ展開されたファイルパスリストを提供した。この名前はグローバル・コマンドの略語である。後にこれは機能的に codice_9 というライブラリ関数として提供され、シェルなどのプログラムで利用されている。
構文.
最も一般的なワイルドカードはcodice_4、codice_7、およびcodice_12である。
いずれの場合においても、パス区切り文字（UNIXではcodice_13、Windowsではcodice_14）にマッチすることは絶対にない。
UNIX.
LinuxやPOSIXのシステムではcodice_4およびcodice_7が定義されているが、codice_12には以下の2つが追加されている:
（C ShellやBashなどの）シェルの中には、AlternationやBrace Expansionとして知られる追加の構文をサポートしているものもある。
Bashは上記以外のパターンマッチ演算子を使用して、括弧で囲まれたパターンの複数発生へのマッチを可能にする（拡張グロブ）もサポートする。この機能はcodice_18シェルオプションをセットすることで有効になる。
は、上記で述べたものと同様に定義された構文を全て搭載しているので、機能追加を行う必要はない。
MS-DOSおよびWindowsの、COMMAND.COM と cmd.exe は、グロブ展開を行わず、コマンドラインにあるワイルドカードの codice_4 などは起動するプログラムにそのまま渡され、プログラム側で対応していればそれなりの動作をする（かもしれない）。シェルの内部コマンドなどで解釈される場合については制限付きながらほぼ同様の構文を持つが、構文が一見似ているだけで、「制限付き」の制限のおかげで全く別物であり、codice_12は存在せず、さらにCOMMAND.COMのcodice_4はパターンの終わりにしか付けられない。
SQL.
SQLの、codice_22条件中のパターンには、codice_7やcodice_4に相当する表現が使える。codice_12に相当する表現は存在しない。
標準SQLにおけるcodice_22条件では、単純な文字列マッチにグロブと似た構文を利用する。パーセント記号 (codice_27) は0文字以上の文字列にマッチし、アンダースコアは1文字にマッチする。しかしながらSQLコミュニティにおいて「グロブ」という用語は一般的ではない。SQLの実装の多くはcodice_22条件を拡張し、正規表現の要素を取り入れた、より豊富なパターンマッチを可能としている。
独自拡張SQLの中にはTransact-SQLのように、codice_12の機能を提供するものもある。この例がcodice_30やcodice_31である。
正規表現との比較.
グロブには、式の前にある部分を複数回繰り返すことを可能とする、クリーネ閉包が無いなど、正規表現とは異なったものである。
グロブは文字列全体とのマッチを試みる。例えば、codice_32 は codice_33 や codice_34 にマッチするが、codice_35 や codice_36 や codice_37 にはマッチしない。
実装.
Bash、tcsh、およびzshなどのUnixシェルは、コマンドラインやシェルスクリプトにおいてファイル名のグロブを提供する。
Windowsのコマンドラインインタプリタであるcmd.exeは、グロブを行うアプリケーションのランタイム関数に依存している。Windows PowerShellのCmdletはグロブをサポートする。
より一般的には、上記で述べたような種類の限定されたパターンマッチング機能をUnixシェル以外の環境で引き合いに出すためにも「グロブ」という用語は使用される。Unixシェル以外の環境におけるグロブの例を以下に示す: