日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
GLOB(3) FreeBSD ライブラリ関数マニュアル GLOB(3)
名称
glob, globfree -- パターン照合のパス名を生成する
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <glob.h>
int
glob(const char * restrict pattern, int flags,
int (*errfunc)(const char *, int), glob_t * restrict pglob);
void
globfree(glob_t *pglob);
解説
glob() 関数は、シェルによって使用されるファイル名のパターンの照合のための
規則を実装するパス名ジェネレータです。
インクルードファイル <glob.h> は、少なくとも次のフィールドを含んでいる構
造体のタイプ glob_t を定義しています:
typedef struct {
size_t gl_pathc; /* これまでのパスの合計のカウント */
size_t gl_matchc; /* パターンと一致しているパスのカウント */
size_t gl_offs; /* gl_pathv の始めで予約される */
int gl_flags; /* 返されるフラグ */
char **gl_pathv; /* パターンと一致しているパスのリスト */
} glob_t;
引数 pattern は、展開されるパス名のパターンへのポインタです。glob() 引数
は、パターンとすべてのアクセス可能なパス名を照合して、一致しているパス名
のリストを作成します。パス名にアクセスするために、glob() は、最後を除いて
パスのすべての構成要素の検索パーミッションを必要とし、特殊文字 `*', `?'
または `[' のいずれかを含んでいる pattern のあらゆるファイル名の構成要素
の各ディレクトリで読み込みパーミッションを必要とします。
glob() 引数は、gl_pathc フィールドに一致しているパス名の数を格納し、
gl_pathv フィールドにパス名へのポインタのリストへのポインタを格納します。
最後のパス名の後の最初のポインタは、NULL です。パターンがいずれのパス名と
も一致しないなら、一致しているパスの返される数は、0 に設定されます。
pglob によって指された構造体を作成することは、呼び出し側の責任です。
glob() 関数は、gl_pathv によって指されるメモリを含んで、必要に応じて他の
空間を割り付けます。
引数 flags は、glob() の振る舞いを修正するために使用されます。flags の値
は、<glob.h> で定義された次の値のいずれかのビット単位の包括的な論理和
(OR) です:
GLOB_APPEND glob() への前の呼び出し (または複数の呼び出し) からのも
のに生成されたパス名を追加します。gl_pathc の値は、この
呼び出しと前の (複数の) 呼び出しによって見つけられる合計
の一致です。パス名は、前の (複数の) 呼び出しによって返さ
れるパス名とマージされずに追加されます。呼び出しの間に、
呼び出し側は、GLOB_DOOFFS フラグの設定を変更してはなら
ず、GLOB_DOOFFS が設定されているとき、gl_offs の値を変更
してはならず、pglob のために globfree() を (明らかに) 呼
び出してはなりません。
GLOB_DOOFFS gl_offs フィールドを使用します。このフラグが設定されるな
ら、gl_offs は、どのくらいの NULL ポインタを gl_pathv
フィールドの最初に付け加えるかを指定するために使用されま
す。言い換えれば、gl_pathv は、NULL ポインタが続いている
gl_pathc パス名のポインタが続いている、gl_offs NULL ポイ
ンタを指しています。
GLOB_ERR glob() は、それが、オープンかまたは読み込むことができな
いディレクトリに遭遇するとき、返ります。通常、glob()
は、一致を見つけ続けます。
GLOB_MARK pattern と一致しているディレクトリである各パス名には、追
加されたスラッシュがあります。
GLOB_NOCHECK pattern があらゆるパス名に一致しないなら、glob() は、1
に設定された合計のパス名の数、0 に設定された一致している
パス名の数がある pattern のみから成るリストを返します。
バックスラッシュのエスケープの効果は、返されたパターンに
存在します。
GLOB_NOESCAPE デフォルトで、バックスラッシュ (`\') 文字は、文字のあら
ゆる特別な解釈を避けて、パターンの次の文字をエスケープす
るために使用されます。GLOB_NOESCAPE が設定されるなら、
バックスラッシュのエスケープは、無効にされます。
GLOB_NOSORT デフォルトで、パス名は、昇順の照合順序でソートされます。
このフラグは、そのソートを防止します (glob() を速めま
す)。
また、次の値は、flags に含められます、しかしながら、それらは、IEEE Std
1003.2 (``POSIX.2'') の非標準の拡張です。
GLOB_ALTDIRFUNC pglob 構造体の次の追加のフィールドは、ディレクトリをオー
プンし、読み込み、そしてクローズするために、そして、それ
らのディレクトリで見つけられる名前に関する stat 情報を取
得するために、使用する glob のための代替の関数で初期化さ
れました。
void *(*gl_opendir)(const char * name);
struct dirent *(*gl_readdir)(void *);
void (*gl_closedir)(void *);
int (*gl_lstat)(const char *name, struct stat *st);
int (*gl_stat)(const char *name, struct stat *st);
この展開は、テープに格納されるディレクトリからグロブ
(ファイル名置換) を提供するために restore(8) のようなプ
ログラムを許可するために提供されます。
GLOB_BRACE csh(1) のような `{pat,pat,...}' 文字列を展開するパターン
文字列を前処理します。パターン `{}' は、歴史的な理由 (と
csh(1) は、find(1) のパターンのタイプを容易にするために
同じことを行う) のために展開されないままにされます。
GLOB_MAGCHAR パターンが、グロブ (ファイル名置換) 文字を含んていたな
ら、glob() 関数によって設定します。より詳しい情報につい
ては、gl_matchc 構造体のメンバの使用法の説明を参照してく
ださい。
GLOB_NOMAGIC は、GLOB_NOCHECK と同じですが、それが特殊文字 ``*'',
``?'' または ``['' のどれも含んでいないなら、それは、
pattern を追加するだけです。GLOB_NOMAGIC は、歴史的な
csh(1) のグロブ (ファイル名置換) の振る舞いを実装するこ
とを簡素化するために提供され、たぶん、他にどこでも使用さ
れるべきではありません。
GLOB_TILDE `~' で始まるパターンをユーザ名のホームディレクトリに展開
します。
GLOB_LIMIT 返されたパス名の合計の数を、gl_matchc (デフォルト
ARG_MAX) で提供された値に制限します。このオプションは、
`*/../*/..' の長い文字列のような非常に多くの照合に展開す
るパターンを通してサービス拒否攻撃を強制することができる
プログラムのために設定されるべきです。
検索の間に、オープンすることができない、または読み込みできないディレクト
リに遭遇して、errfunc が NULL でないなら、glob() は、(*errfunc)(path,
errno) を呼び出しますが、GLOB_ERR フラグは、これが起こるとき、ただちに返
ります。
errfunc が 0 以外で返るなら、glob() は、スキャンを停止して、すでに一致し
ているあらゆるパスを反映するために gl_pathc と gl_pathv を設定した後に
GLOB_ABORTED を返します。呼び出されるなら、errfunc の返り値に関わらず、エ
ラーに遭遇し、GLOB_ERR が flags に設定されているなら、また、これは、起こ
ります。GLOB_ERR が設定されず、errfunc が NULL であるか、または errfunc
が 0 を返すかのいずれかであるなら、エラーは、無視されます。
globfree() 関数は、glob() への以前の (複数の) 呼び出しから pglob に関連す
るあらゆる空間を解放します。
戻り値
成功して完了すると、glob() は、0 を返します。さらに、pglob のフィールド
は、以下に説明された値を含んでいます:
gl_pathc は、これまでに、一致しているパス名の合計の数を含んでいま
す。これは、GLOB_APPEND が指定されたなら、glob() の以前の呼
び出しから他の一致を含んでいます。
gl_matchc は、glob() の現在の呼び出しの一致しているパス名の数を含んで
います。
gl_flags は、pattern が特殊文字 ``*'', ``?'' or ``['' のいずれかを含
んでいたなら、設定されたビット GLOB_MAGCHAR がある flags 引
数のコピーを含み、そうでなければ、クリアされます。
gl_pathv は、一致しているパス名の NULL で終了するリストへのポインタ
を含んでいます。しかしながら、gl_pathc が 0 であるなら、
gl_pathv の内容は、未定義です。
glob() が、エラーのために終了するなら、それは、errno を設定し、インクルー
ドファイル <glob.h> で定義されている、次の 0 以外の定数の 1 つを返します:
GLOB_NOSPACE メモリを割り付ける試みが、失敗したか、または errno が E2BIG
であったなら、GLOB_LIMIT は、フラグで指定され、
pglob->gl_matchc またはより多くのパターンが一致しました。
GLOB_ABORTED エラーに遭遇し、GLOB_ERR が、設定されていたか、または
(*errfunc)() が、0 以外を返すかのいずれかのために、スキャン
は、停止されました。
GLOB_NOMATCH パターンは、パス名と位置しませんでした、そして、
GLOB_NOCHECK は、設定されませんでした。
引数 pglob->gl_pathc と pglob->gl_pathv は、まだ上記に指定されるように設
定されます。
使用例
`ls -l *.c *.h' のおおよその同等物を次のコードで取得することができます:
glob_t g;
g.gl_offs = 2;
glob("*.c", GLOB_DOOFFS, NULL, &g);
glob("*.h", GLOB_DOOFFS | GLOB_APPEND, NULL, &g);
g.gl_pathv[0] = "ls";
g.gl_pathv[1] = "-l";
execvp("ls", g.gl_pathv);
関連項目
sh(1), fnmatch(3), regex(3)
規格
glob() 関数の現在の実装は、IEEE Std 1003.2 (``POSIX.2'') に適合していませ
ん。シンボル式を照合すること、同値類の式と文字クラス式は、サポートされて
いません。
フラグ GLOB_ALTDIRFUNC, GLOB_BRACE, GLOB_LIMIT, GLOB_MAGCHAR,
GLOB_NOMAGIC と GLOB_TILDE およびフィールド gl_matchc と gl_flags は、
POSIX 標準の拡張であり、厳密な適合のために努めているアプリケーションに
よって使用されるべきではありません。
歴史
glob() と globfree() 関数は、4.4BSD ではじめて登場しました。
バグ
MAXPATHLEN より長いパターンは、チェックされないのエラーを起こすかもしれま
せん。
glob() 引数は、失敗して、ライブラリルーチン stat(2), closedir(3),
opendir(3), readdir(3), malloc(3) と free(3) で明記されたエラーのいずれか
を errno に設定します。
FreeBSD 13.2 December 20, 2011 FreeBSD 13.2