glob

GLOB(3)         Ð ÑководÑÑво пÑогÑаммиÑÑа Linux         GLOB(3)



ÐÐЯ
       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() иÑÐµÑ Ð²Ñе ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн пÑÑей Ñ
       заданнÑм Ñаблоном pattern, ÑоглаÑно
       пÑавилам, иÑполÑзÑемÑм оболоÑкой (ÑмоÑÑиÑе
       glob(7)). РаÑÑиÑÐµÐ½Ð¸Ñ ÑилÑÐ´Ñ Ð¸Ð»Ð¸ подÑÑановка
       паÑамеÑÑов не вÑполнÑеÑÑÑ; еÑли ÑÑо нÑжно, Ñо
       иÑполÑзÑйÑе wordexp(3).

       ФÑнкÑÐ¸Ñ globfree() оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑки
       вÑделенное ÑÑанилиÑе, полÑÑенное в
       поÑледнем вÑзове glob().

       РезÑлÑÑаÑÑ Ð²Ñзова glob() ÑоÑÑанÑÑÑÑÑ Ð² ÑÑÑÑкÑÑÑе, на
       коÑоÑÑÑ ÑказÑÐ²Ð°ÐµÑ pglob. ÐÑа ÑÑÑÑкÑÑÑа Ð¸Ð¼ÐµÐµÑ Ñип
       glob_t (обÑÑвлен в <glob.h>) и ÑодеÑÐ¶Ð¸Ñ ÑледÑÑÑие
       ÑлеменÑÑ, опÑеделÑннÑе в POSIX.2 (Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸
       болÑÑе, в виде ÑаÑÑиÑений):

           typedef struct {
               size_t   gl_pathc;    /* колиÑеÑÑво ÑовпавÑÐ¸Ñ Ð¿ÑÑей  */
               char   **gl_pathv;    /* ÑпиÑок ÑовпавÑÐ¸Ñ Ð¸Ð¼Ñн пÑÑей.  */
               size_t   gl_offs;     /* заÑезеÑвиÑованнÑе в gl_pathv ÑлоÑÑ.  */
           } glob_t;

       РезÑлÑÑаÑÑ ÑазмеÑаÑÑÑÑ Ð² динамиÑеÑки
       вÑделÑемом ÑÑанилиÑе.

       ÐнаÑение паÑамеÑÑа flags ÑоÑмиÑÑеÑÑÑ Ð¿Ð¾Ð±Ð¸ÑовÑм
       Ñложением нÑÐ»Ñ Ð¸Ð»Ð¸ более ÑледÑÑÑиÑ
       ÑимволиÑеÑÐºÐ¸Ñ ÐºÐ¾Ð½ÑÑанÑ, коÑоÑÑе менÑÑÑ Ñод
       ÑабоÑÑ glob():

       GLOB_ERR
              ÐÑполнÑÑÑ Ð²Ð¾Ð·Ð²ÑÐ°Ñ Ð¿Ñи оÑибке ÑÑениÑ
              (напÑимеÑ, Ð½ÐµÑ Ð¿Ñав Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ ÐºÐ°Ñалога).
              Ðо ÑмолÑÐ°Ð½Ð¸Ñ glob() пÑÑаеÑÑÑ Ð¿ÑодолжиÑÑ
              ÑабоÑÑ Ð½Ðµ ÑмоÑÑÑ Ð½Ð° оÑибки, ÑиÑÐ°Ñ Ð²Ñе
              каÑалоги, коÑоÑÑе можеÑ.

       GLOB_MARK
              ÐобавлÑÑÑ ÐºÐ¾ÑÑÑ ÑеÑÑÑ Ðº ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð¿ÑÑи,
              коÑоÑÑй ÑооÑвеÑÑÑвÑÐµÑ ÐºÐ°ÑалогÑ.

       GLOB_NOSORT
              Ðе ÑоÑÑиÑоваÑÑ Ð²Ð¾Ð·Ð²ÑаÑаемÑе имена. ÐÑо
              ÑÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ð¿ÑоÑеÑÑоÑное вÑемÑ. Ðо ÑмолÑаниÑ
              имена ÑоÑÑиÑÑÑÑÑÑ.

       GLOB_DOOFFS
              РезеÑвиÑоваÑÑ ÑлоÑÑ pglob->gl_offs Ñ Ð½Ð°Ñала
              ÑпиÑка ÑÑÑок в pglob->pathv.
              ÐаÑезеÑвиÑованнÑе ÑлоÑÑ ÑодеÑжаÑ
              ÑказаÑели null.

       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}"
              возвÑаÑаÑÑÑÑ Ñе же ÑезÑлÑÑаÑÑ ÑÑо и пÑи
              ÑеÑÑÑÑÑ Ð¾ÑделÑнÑÑ Ð²ÑÐ·Ð¾Ð²Ð°Ñ glob() Ñо ÑÑÑоками:
              "foo/", "foo/cat", "foo/dog" и "bar".

       GLOB_NOMAGIC
              ÐозвÑаÑаÑÑ Ñам Ñаблон, еÑли в нÑм не
              ÑодеÑжаÑÑÑ Ð¼ÐµÑаÑимволÑ, даже пÑи
              оÑÑÑÑÑÑвии Ñайла Ñ Ñаким именем.

       GLOB_TILDE
              ÐÑполнÑÑÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ ÑилÑдÑ. ÐÑли ÑилÑда ('~')
              â единÑÑвеннÑй Ñимвол в Ñаблоне или
              поÑле наÑалÑной ÑилÑÐ´Ñ ÑÑÐ°Ð·Ñ Ñказана
              коÑÐ°Ñ ÑеÑÑа ('/'), Ñо вмеÑÑо ÑилÑдÑ
              подÑÑавлÑеÑÑÑ Ð´Ð¾Ð¼Ð°Ñний каÑалог
              вÑзÑваÑÑего ÐÑли поÑле наÑалÑной ÑилÑдÑ
              Ñказано Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ (напÑимеÑ,
              "~andrea/bin"), Ñо вмеÑÑо ÑилÑÐ´Ñ Ð¸ имени
              полÑзоваÑÐµÐ»Ñ Ð¿Ð¾Ð´ÑÑавлÑеÑÑÑ Ð´Ð¾Ð¼Ð°Ñний
              каÑалог ÑÑого полÑзоваÑелÑ. ÐÑли имÑ
              полÑзоваÑÐµÐ»Ñ Ð½ÐµÐºÐ¾ÑÑекÑно или домаÑний
              каÑалог невозможно опÑеделиÑÑ, Ñо
              подÑÑановка не вÑполнÑеÑÑÑ.

       GLOB_TILDE_CHECK
              Ðоведение подобно GLOB_TILDE. ÐÑлиÑие в
              Ñом, ÑÑо еÑли Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ
              некоÑÑекÑно или домаÑний каÑалог
              невозможно опÑеделиÑÑ, Ñо вмеÑÑо
              иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñамого Ñаблона как
              имени, glob() возвÑаÑÐ°ÐµÑ GLOB_NOMATCH длÑ
              ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð½Ð° оÑибкÑ.

       GLOB_ONLYDIR
              ÐÑо ÑолÑко Ñказание glob() на Ñо, ÑÑо
              вÑзÑваÑÑего инÑеÑеÑÑÑÑ ÑолÑко каÑалоги,
              ÑооÑвеÑÑÑвÑÑÑие ÑаблонÑ. ÐÑли ÑеализаÑиÑ
              Ð¼Ð¾Ð¶ÐµÑ Ð»ÐµÐ³ÐºÐ¾ опÑеделиÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾
              Ñипе Ñайла, Ñо ÑÐ°Ð¹Ð»Ñ Ð½Ðµ каÑалоги не
              возвÑаÑаÑÑÑÑ Ð²ÑзÑваÑÑемÑ. Ðднако,
              вÑзÑваÑÑий вÑÑ Ñавно должен пÑовеÑÑÑÑ, ÑÑо
              полÑÑеннÑе ÑÐ°Ð¹Ð»Ñ â каÑалоги
              (назнаÑение ÑÑого Ñлага â вÑе лиÑÑ
              опÑимизаÑÐ¸Ñ Ð¿ÑоизводиÑелÑноÑÑи в
              ÑлÑÑае, когда вÑзÑваÑÑÐµÐ¼Ñ Ð½ÑÐ¶Ð½Ñ ÑолÑко
              каÑалоги).

       ÐÑли errfunc не Ñавно NULL, Ñо в ÑлÑÑае оÑибки она
       бÑÐ´ÐµÑ Ð²Ñзвана Ñ Ð¿Ð°ÑамеÑÑами epath (ÑказаÑелÑ
       на пÑÑÑ, в коÑоÑом пÑоизоÑла оÑибка) и eerrno
       (полÑÑенное знаÑение errno поÑле вÑзова
       одной из ÑÑнкÑий opendir(3), readdir(3) или
       stat(2)).ÐÑли errfunc веÑнÑÑ Ð½ÐµÐ½Ñлевое знаÑение
       или еÑли Ñлаг GLOB_ERR ÑÑÑановлен, Ñо glob()
       законÑÐ¸Ñ ÑабоÑÑ Ð¿Ð¾Ñле вÑзова errfunc.

       ÐÑи ÑÑпеÑном вÑполнении в pglob->gl_pathc
       ÑодеÑжиÑÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑовпадаÑÑÐ¸Ñ Ð¸Ð¼Ñн, а
       pglob->gl_pathv ÑодеÑÐ¶Ð¸Ñ ÑказаÑÐµÐ»Ñ Ð½Ð° ÑпиÑок
       ÑказаÑелей на найденнÑе имена. СпиÑок
       ÑказаÑелей завеÑÑаеÑÑÑ ÑказаÑелем null.

       ÐÑзов glob() Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð½ÐµÑколÑко Ñаз. Ð
       ÑÑом ÑлÑÑае Ñлаг GLOB_APPEND должен бÑÑÑ Ð²ÐºÐ»ÑÑÑн в
       flags пÑи вÑоÑом и поÑледÑÑÑÐ¸Ñ Ð²ÑзоваÑ.

       Ðак ÑаÑÑиÑение GNU, пÑи обнаÑÑжении
       меÑаÑимволов pglob->gl_flags â Ð½Ð°Ð±Ð¾Ñ Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼ÑÑ
       Ñлагов, ÑложеннÑй Ñ GLOB_MAGCHAR (Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ
       опеÑаÑии ÐÐÐ).

ÐÐÐÐÐ ÐЩÐÐÐÐÐ ÐÐÐЧÐÐÐÐ
       ÐÑи ÑÑпеÑном вÑполнении glob() возвÑаÑаеÑ
       нолÑ. ÐÑÑгие возможнÑе возвÑаÑаемÑе
       знаÑениÑ:

       GLOB_NOSPACE
              занÑÑа вÑÑ ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð°Ñ Ð¿Ð°Ð¼ÑÑÑ

       GLOB_ABORTED
              оÑибка ÑÑениÑ

       GLOB_NOMATCH
              не найдено Ñовпадений Ñ Ñаблоном

ÐТРÐÐУТЫ
       ÐпиÑание ÑеÑминов данного Ñаздела ÑмоÑÑиÑе
       в attributes(7).

       ┌──────────────┬────────────────────────────────┬──────────────────────────┐
       │ÐнÑеÑÑÐµÐ¹Ñ ÐÑÑибÑÑ                      ÐнаÑение           │
       ├──────────────┼────────────────────────────────┼──────────────────────────┤
       │glob()        │ ÐезвÑедноÑÑÑ Ð² ниÑÑÑ │ MT-Unsafe race:utent env │
       │              │                                │ sig:ALRM timer locale    │
       ├──────────────┼────────────────────────────────┼──────────────────────────┤
       │globfree()    │ ÐезвÑедноÑÑÑ Ð² ниÑÑÑ │ MT-Safe                  │
       └──────────────┴────────────────────────────────┴──────────────────────────┘
       РпÑиведÑнной вÑÑе ÑаблиÑе utent в race:utent
       ознаÑаеÑ, ÑÑо еÑли лÑÐ±Ð°Ñ Ð¸Ð· ÑÑнкÑий setutent(3),
       getutent(3) или endutent(3) иÑполÑзÑеÑÑÑ
       одновÑеменно в неÑколÑÐºÐ¸Ñ Ð½Ð¸ÑÑÑ Ð¿ÑогÑаммÑ,
       Ñо Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÑÑÑ ÑоÑÑÑзаÑелÑноÑÑÑ Ð¿Ð¾
       даннÑм. ÐÑи ÑÑнкÑии вÑзÑваÑÑÑÑ Ð¸Ð· glob(), поÑÑомÑ
       Ð¼Ñ Ð¸ÑполÑзÑем race:utent Ð´Ð»Ñ Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ.

СÐÐТÐÐТСТÐÐРСТÐÐÐÐРТÐÐ
       POSIX.1-2001, POSIX.1-2008, POSIX.2.

ÐÐÐÐЧÐÐÐЯ
       ÐлеменÑÑ ÑÑÑÑкÑÑÑÑ gl_pathc и gl_offs обÑÑÐ²Ð»ÐµÐ½Ñ Ñ
       Ñипом size_t в glibc 2.1 (как и Ð´Ð¾Ð»Ð¶Ð½Ñ ÑказÑваÑÑÑÑ,
       ÑоглаÑно POSIX.2), но ÑÐºÐ°Ð·Ð°Ð½Ñ ÐºÐ°Ðº int в glibc 2.0.

ÐÐФÐÐТЫ
       ФÑнкÑÐ¸Ñ 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)



GNU                               2015-04-19                           GLOB(3)