Man page - glob(3)

Packages contains this manual

Available languages:

en fr pl ja ru de

Manual

GLOB

名 前
書 åŧ
čĒŦ 明
čŋ” り 値
åąž 性
æē– 拠
æŗ¨ 意
バ グ
例
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

glob, globfree - パ ã‚ŋ ãƒŧ ãƒŗ ãĢ マ ッ チ す る パ ゚ 名 を čĻ‹ äģ˜ ã‘ る 。 glob() ãĢ よ ãŖ ãĻ įĸē äŋ さ れ た ãƒĄ ãƒĸ ãƒĒ ãƒŧ 領 域 を č§Ŗ 攞 す る 。

書 åŧ

#include <glob.h>

int glob(const char * pattern , int flags ,
int (*
errfunc ) (const char * epath , int eerrno ),
glob_t *
pglob );
void globfree(glob_t *
pglob );

čĒŦ 明

glob () é–ĸ 数 は ã‚ˇ ェ ãƒĢ が ᔍ い ãĻ い る ãƒĢ ãƒŧ ãƒĢ ( glob (7) 参 į…§ ) ãĢ åŸē ãĨ い ãĻ パ ã‚ŋ ãƒŧ ãƒŗ pattern ãĢ マ ッ チ す る す ず ãĻ ぎ パ ゚ 名 を 検 į´ĸ す る 。 チ ãƒĢ ダ (˜) ぎ åą• 開 や パ ナ ãƒĄ ãƒŧ ã‚ŋ ãƒŧ įŊŽ æ› は 行 わ れ ãĒ い 。 そ れ ら を 行 い た い å ´ 合 は wordexp (3) を äŊŋ う と よ い 。

globfree () é–ĸ 数 は 前 ãĢ å‘ŧ ば れ た glob () ãĢ よ り 動 įš„ ãĢ įĸē äŋ さ れ た 記 æ†ļ 領 域 を č§Ŗ 攞 す る 。

glob () ぎ įĩ 果 は pglob が ポ イ ãƒŗ ト す る 構 造 äŊ“ ãĢ čŋ” さ れ る 。 pglob は glob_t 型 ぎ 構 造 äŊ“ で あ る 。 glob_t 型 は <glob.h> 内 で åŽŖ 言 さ れ ãĻ お り 、 äģĨ 下 ぎ čρ į´  を åĢ ん で い る 。 こ れ ら ぎ čρ į´  は POSIX.2 で 厚 įžŠ さ れ ãĻ い る (さ ら ãĢ 多 く ぎ čρ į´  が æ‹Ą åŧĩ と し ãĻ å…Ĩ ãŖ ãĻ い る か も し れ ãĒ い )。

typedef struct {
size_t gl_pathc; /* äģŠ ãž で ãĢ マ ッ チ し た パ ゚ ぎ 数 */
char **gl_pathv; /* マ ッ チ し た パ ゚ 名 ぎ ãƒĒ ゚ ト */
size_t gl_offs; /* gl_pathv 内 ãĢ įĸē äŋ す る ゚ ロ ッ ト 数 */
} glob_t;

įĩ 果 は 動 įš„ ãĢ įĸē äŋ さ れ た 記 æ†ļ 領 域 ãĢ å…Ĩ れ ら れ る 。

パ ナ ãƒĄ ãƒŧ ã‚ŋ ãƒŧ flags ãĢ は äģĨ 下 ぎ į¤ē す 厚 数 ぎ う ãĄ 、 指 厚 し た い も ぎ を ビ ッ ト ご と ぎ OR で 与 え る (一 つ も 指 厚 し ãĒ く ãĻ も よ い )。 こ れ ãĢ よ ãŖ ãĻ glob () ぎ 動 äŊœ を 変 更 で き る 。
GLOB_ERR

(例 え ば 、 デ ã‚Ŗ ãƒŦ ク ト ãƒĒ ãĢ čĒ­ ãŋ 取 り 訹 可 åąž 性 が į„Ą い å ´ 合 ãĒ お で ) čĒ­ ãŋ 取 り エ ナ ãƒŧ が į™ē į”Ÿ し た 際 ãĢ é–ĸ 数 か ら æˆģ る 。 デ フ り ãƒĢ ト で は 、 エ ナ ãƒŧ ãĢ é–ĸ わ ら ず čĒ­ ãŋ 取 り 可 čƒŊ ãĒ デ ã‚Ŗ ãƒŦ ク ト ãƒĒ を 全 ãĻ ãĢ つ い ãĻ čĒ­ ãŋ 取 り を 原 行 し よ う と す る 。

GLOB_MARK

デ ã‚Ŗ ãƒŦ ク ト ãƒĒ ãĢ 寞 åŋœ す る 各 々 ぎ パ ゚ ãĢ ゚ ナ ッ ã‚ˇ ãƒĨ を äģ˜ åŠ  す る 。

GLOB_NOSORT

čŋ” さ れ る パ ゚ 名 ぎ ã‚Ŋ ãƒŧ ト を 行 わ ãĒ い 。 ã‚Ŋ ãƒŧ ト を 行 わ ãĒ い ᐆ į”ą は 、 å‡Ļ ᐆ 時 間 を ᝀ į´„ す る た め だ け で あ る 。 デ フ り ãƒĢ ト で は 、 čŋ” さ れ る パ ゚ 名 は ã‚Ŋ ãƒŧ ト さ れ る 。

GLOB_DOOFFS

pglob->pathv ぎ 文 字 列 ãƒĒ ゚ ト ぎ 先 é ­ ãĢ pglob->gl_offs ゚ ロ ッ ト 分 ぎ 領 域 を äēˆ į´„ す る 。 äēˆ į´„ さ れ た ゚ ロ ッ ト ãĢ は ヌ ãƒĢ ポ イ ãƒŗ ã‚ŋ ãƒŧ が å…Ĩ る 。

GLOB_NOCHECK

マ ッ チ す る パ ã‚ŋ ãƒŧ ãƒŗ が ãĒ け れ ば 、 元 ぎ パ ã‚ŋ ãƒŧ ãƒŗ を čŋ” す 。 デ フ り ãƒĢ ト で は 、 glob () は マ ッ チ す る パ ã‚ŋ ãƒŧ ãƒŗ が ãĒ け れ ば GLOB_NOMATCH を čŋ” す 。

GLOB_APPEND

こ ぎ å‘ŧ ãŗ å‡ē し で ぎ įĩ 果 を į›´ 前 ぎ glob () ぎ å‘ŧ ãŗ å‡ē し で čŋ” さ れ た įĩ 果 ぎ ベ ク ト ãƒĢ ãĢ čŋŊ 加 す る 。 最 初 ぎ glob () ぎ å‘ŧ ãŗ å‡ē し ぎ 際 ãĢ は こ ぎ フ ナ グ を 設 厚 し ãĻ は い け ãĒ い 。

GLOB_NOESCAPE

バ ッ ク ゚ ナ ッ ã‚ˇ ãƒĨ ('\') を エ ゚ ã‚ą ãƒŧ プ ᔍ 文 字 と し ãĻ äŊŋ ᔍ で き ãĒ い 。 通 常 は 、 バ ッ ク ゚ ナ ッ ã‚ˇ ãƒĨ を äŊŋ ãŖ ãĻ 、 æŦĄ ãĢ įļš ã 文 字 を ク り ãƒŧ ト す る こ と で 、 į‰š åˆĨ ãĒ 意 呺 を 持 つ ãƒĄ ã‚ŋ キ ãƒŖ ナ ク ã‚ŋ ãƒŧ を į„Ą 劚 す る こ と が で き る 。

flags ãĢ は äģĨ 下 ãĢ į¤ē す も ぎ も 指 厚 で き る 。 こ れ ら は GNU で æ‹Ą åŧĩ さ れ た も ぎ で 、 POSIX.2 で は 厚 įžŠ さ れ ãĻ い ãĒ い 。
GLOB_PERIOD

先 é ­ ぎ ピ ãƒĒ ã‚Ē ド が ãƒĄ ã‚ŋ キ ãƒŖ ナ ク ã‚ŋ ãƒŧ ãĢ マ ッ チ で き る よ う ãĢ す る 。 デ フ り ãƒĢ ト で は 、 ãƒĄ ã‚ŋ キ ãƒŖ ナ ク ã‚ŋ ãƒŧ は 先 é ­ ぎ ピ ãƒĒ ã‚Ē ド ãĢ は マ ッ チ で き ãĒ い 。

GLOB_ALTDIRFUNC

フ ã‚Ą イ ãƒĢ ã‚ˇ ゚ テ ム ãĢ ã‚ĸ ク ã‚ģ ゚ す る 際 ãĢ 、 通 常 ぎ ナ イ ブ ナ ãƒĒ é–ĸ 数 ぎ äģŖ ã‚ り ãĢ äģŖ æ›ŋ é–ĸ 数 pglob->gl_closedir , pglob->gl_readdir , pglob->gl_opendir , pglob->gl_lstat , pglob->gl_stat が ᔍ い ら れ る 。

GLOB_BRACE

{a,b} と い う åŊĸ åŧ ぎ csh (1) ゚ ã‚ŋ イ ãƒĢ ぎ æ‹Ŧ åŧ§ 襨 įž を åą• 開 す る 。 æ‹Ŧ åŧ§ 襨 įž は å…Ĩ れ 子 ãĢ す る こ と が で き る 。 し た が ãŖ ãĻ 、 例 え ば 、 "{foo/{,cat,dog},bar}" と い う パ ã‚ŋ ãƒŧ ãƒŗ を 指 厚 し た å ´ 合 ãĢ åž— ら れ る įĩ 果 は 、 4つ ぎ 文 字 列 "foo/", "foo/cat", "foo/dog", "bar" ぎ そ れ ぞ れ ãĢ つ い ãĻ glob () を å‘ŧ ãŗ å‡ē し た å ´ 合 と 同 じ ãĢ ãĒ る 。

GLOB_NOMAGIC

パ ã‚ŋ ãƒŧ ãƒŗ ãĢ ãƒĄ ã‚ŋ キ ãƒŖ ナ ク ã‚ŋ ãƒŧ が åĢ ぞ れ ãĻ い ãĒ い å ´ 合 、 マ ッ チ įĩ 果 と し ãĻ 指 厚 さ れ た パ ã‚ŋ ãƒŧ ãƒŗ だ け を čŋ” す 。 パ ã‚ŋ ãƒŧ ãƒŗ で 指 厚 さ れ た 名 前 ぎ フ ã‚Ą イ ãƒĢ が 存 在 し ãĒ い å ´ 合 で あ ãŖ ãĻ も 、 そ ぎ パ ã‚ŋ ãƒŧ ãƒŗ が čŋ” さ れ る 。

GLOB_TILDE

チ ãƒĢ ダ ぎ åą• 開 を 行 う 。 チ ãƒĢ ダ ('~') が パ ã‚ŋ ãƒŧ ãƒŗ 内 ぎ 唯 一 ぎ 文 字 ぎ å ´ 合 か 、 先 é ­ ぎ チ ãƒĢ ダ ぎ į›´ 垌 ぎ 文 字 が ゚ ナ ッ ã‚ˇ ãƒĨ ('/') ぎ å ´ 合 、 チ ãƒĢ ダ を å‘ŧ ãŗ å‡ē し 者 ぎ ホ ãƒŧ ム デ ã‚Ŗ ãƒŦ ク ト ãƒĒ で įŊŽ æ› す る 。 先 é ­ ぎ チ ãƒĢ ダ ãĢ ãƒĻ ãƒŧ ã‚ļ ãƒŧ 名 が įļš ã å ´ 合 (例 え ば "~andrea/bin")、 チ ãƒĢ ダ と ãƒĻ ãƒŧ ã‚ļ ãƒŧ 名 を そ ぎ ãƒĻ ãƒŧ ã‚ļ ãƒŧ ぎ ホ ãƒŧ ム デ ã‚Ŗ ãƒŦ ク ト ãƒĒ で įŊŽ æ› す る 。 ãƒĻ ãƒŧ ã‚ļ ãƒŧ 名 が į„Ą 劚 ãĒ å ´ 合 や ホ ãƒŧ ム デ ã‚Ŗ ãƒŦ ク ト ãƒĒ が æąē 厚 で き ãĒ い å ´ 合 は 、 įŊŽ æ› は 原 行 さ れ ãĒ い 。

GLOB_TILDE_CHECK

こ ぎ フ ナ グ を 指 厚 す る と GLOB_TILDE と 同 様 ぎ 振 舞 い を す る 。 GLOB_TILDE と ぎ 違 い は 、 ãƒĻ ãƒŧ ã‚ļ ãƒŧ 名 が į„Ą 劚 だ ãŖ た å ´ 合 や ホ ãƒŧ ム デ ã‚Ŗ ãƒŦ ク ト ãƒĒ が æąē 厚 で き ãĒ か ãŖ た å ´ 合 ãĢ 、 パ ã‚ŋ ãƒŧ ãƒŗ č‡Ē čēĢ ã‚’ äŊŋ ᔍ す る ぎ で は ãĒ く 、 glob () が エ ナ ãƒŧ を į¤ē す GLOB_NOMATCH を čŋ” す こ と で あ る 。

GLOB_ONLYDIR

こ ぎ フ ナ グ は 、 glob () ãĢ 寞 す る 「 ヒ ãƒŗ ト 」 で あ り 、 å‘ŧ ãŗ å‡ē し 側 が パ ã‚ŋ ãƒŧ ãƒŗ ãĢ マ ッ チ す る デ ã‚Ŗ ãƒŦ ク ト ãƒĒ ãĢ し か 興 呺 が ãĒ い こ と を įŸĨ ら せ る 。 原 čŖ… ãĢ お い ãĻ フ ã‚Ą イ ãƒĢ ぎ į¨Ž åˆĨ 情 å ą を į°Ą 単 ãĢ æąē 厚 で き る å ´ 合 は 、 デ ã‚Ŗ ãƒŦ ク ト ãƒĒ で ãĒ い フ ã‚Ą イ ãƒĢ は å‘ŧ ãŗ å‡ē し 側 ãĢ čŋ” さ れ ãĒ い 。 し か し ãĒ が ら 、 å‘ŧ ãŗ å‡ē し 側 で は 、 čŋ” さ れ た フ ã‚Ą イ ãƒĢ ãƒĒ ゚ ト が デ ã‚Ŗ ãƒŦ ク ト ãƒĒ か お う か を įĸē čĒ し ãĒ け れ ば ãĒ ら ãĒ い 。 (こ ぎ フ ナ グ が 存 在 す る ぎ は 、 å‘ŧ ãŗ å‡ē し 側 が デ ã‚Ŗ ãƒŦ ク ト ãƒĒ ãĢ し か 興 呺 が ãĒ い 際 ãĢ 性 čƒŊ を 最 遊 化 す る į›Ž įš„ ぎ た め だ け で あ る 。 )

errfunc が NULL で ãĒ け れ ば 、 エ ナ ãƒŧ が čĩˇ こ ãŖ た å ´ 合 ãĢ は é–ĸ 数 errfunc が å‘ŧ ãŗ å‡ē さ れ る 。 é–ĸ 数 ぎ åŧ• 数 ãĢ は 、 å¤ą 敗 し た パ ゚ 名 epath と errno ( opendir (3), readdir (3), stat (2). ぎ い ず れ か ãĢ よ ãŖ ãĻ ã‚ģ ッ ト さ れ た 値 ) が 与 え ら れ る 。 errfunc が 0 äģĨ 外 ぎ 値 を čŋ” す か も し く は GLOB_ERR が ã‚ģ ッ ト さ れ た å ´ 合 glob () は errfunc ぎ å‘ŧ ãŗ å‡ē し 垌 ãĢ įĩ‚ äē† ã™ る 。

å‘ŧ ãŗ å‡ē し が 成 功 し ãĻ æˆģ ãŖ た å ´ 合 pglob->gl_pathc ãĢ は マ ッ チ し た パ ゚ 名 が åĢ ぞ れ 、 pglob->gl_pathv は マ ッ チ し た パ ゚ 名 へ ぎ ポ イ ãƒŗ ã‚ŋ ãƒŧ ぎ ãƒĒ ゚ ト へ ぎ ポ イ ãƒŗ ã‚ŋ ãƒŧ と ãĒ る 。 ポ イ ãƒŗ ã‚ŋ ãƒŧ ぎ ãƒĒ ゚ ト は ヌ ãƒĢ ポ イ ãƒŗ ã‚ŋ ãƒŧ で įĩ‚ į̝ さ れ る 。

glob () を äŊ• åēĻ ã‹ įļš ã‘ ãĻ å‘ŧ ãŗ å‡ē す こ と が で き る 。 そ ぎ 際 2回 į›Ž äģĨ 降 ぎ å‘ŧ ãŗ å‡ē し で は GLOB_APPEND フ ナ グ が flags ãĢ 設 厚 さ れ ãĻ い ãĒ け れ ば ãĒ ら ãĒ い 。

GNU ぎ æ‹Ą åŧĩ と し ãĻ 、 pglob->gl_flags ãĢ は 指 厚 し た フ ナ グ が ã‚ģ ッ ト さ れ る 。 も し 一 つ で も ãƒĄ ã‚ŋ キ ãƒŖ ナ ク ã‚ŋ ãƒŧ が čĻ‹ äģ˜ ã‹ れ ば こ ぎ フ ナ グ と GLOB_MAGCHAR と ぎ OR を 取 ãŖ た įĩ 果 が ã‚ģ ッ ト さ れ る 。

čŋ” り 値

å‘ŧ ãŗ å‡ē し が 成 功 し ãĻ 厌 äē† ã™ る と glob () は 0 を čŋ” す 。 そ れ äģĨ 外 ぎ čŋ” り 値 は äģĨ 下 ぎ 通 り :
GLOB_NOSPACE

ãƒĄ ãƒĸ ãƒĒ ãƒŧ を äŊŋ い 果 た し た

GLOB_ABORTED

čĒ­ ãŋ 取 り エ ナ ãƒŧ

GLOB_NOMATCH

一 つ も マ ッ チ し ãĒ か ãŖ た

åąž 性

こ ぎ ᝀ で äŊŋ ᔍ さ れ ãĻ い る ᔍ čĒž ぎ čĒŦ 明 ãĢ つ い ãĻ は 、 attributes (7) を 参 į…§ 。

Image grohtml-40110-1.png

In the above table, utent in race:utent signifies that if any of the functions setutent (3), getutent (3), or endutent (3) are used in parallel in different threads of a program, then data races could occur. glob () calls those functions, so we use race:utent to remind users.

æē– 拠

POSIX.1-2001, POSIX.1-2008, POSIX.2.

æŗ¨ 意

glibc 2.1 で は 、 gl_pathc と gl_offs は POSIX.2 で 指 厚 さ れ ãĻ い る よ う ãĢ size_t と し ãĻ åŽŖ 言 さ れ ãĻ い る 。 glibc 2.0 で は 、 int と し ãĻ åŽŖ 言 さ れ ãĻ い る 。

バ グ

glob () é–ĸ 数 は そ ぎ 中 で å‘ŧ ãŗ å‡ē し ãĻ い る malloc (3) や opendir (3) ãĒ お ぎ é–ĸ 数 ぎ å‘ŧ ãŗ å‡ē し で å¤ą 敗 が čĩˇ こ る と å¤ą 敗 す る 。 こ れ ãĢ よ り errno ãĢ そ ぎ エ ナ ãƒŧ ã‚ŗ ãƒŧ ド が å…Ĩ る 。

例

äŊŋ ᔍ æŗ• ぎ 一 例 を äģĨ 下 ãĢ į¤ē す 。 äģĨ 下 は ã‚ˇ ェ ãƒĢ で

ls -l *.c ../*.c

を ã‚ŋ イ プ し た å ´ 合 を ã‚ˇ ミ ãƒĨ ãƒŦ ãƒŧ ト し ãĻ い る 。

glob_t globbuf;

globbuf.gl_offs = 2;
glob("*.c", GLOB_DOOFFS, NULL, &globbuf);
glob("../*.c", GLOB_DOOFFS | GLOB_APPEND, NULL, &globbuf);
globbuf.gl_pathv[0] = "ls";
globbuf.gl_pathv[1] = "-l";
execvp("ls", &globbuf.gl_pathv[0]);

é–ĸ 逪 項 į›Ž

ls (1), sh (1), stat (2), exec (3), fnmatch (3), malloc (3), opendir (3), readdir (3), wordexp (3), glob (7)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。