Provided by: manpages-ru-dev_4.21.0-2_all 
      
    
ИМЯ
       wordexp, wordfree - дополняет слово как оболочка posix
LIBRARY
       Standard C library (libc, -lc)
СИНТАКСИС
       #include <wordexp.h>
       int wordexp(const char *restrict s, wordexp_t *restrict p, int flags);
       void wordfree(wordexp_t *p);
   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
       wordexp(), wordfree():
           _XOPEN_SOURCE
ОПИСАНИЕ
       Функция  wordexp()  выполняет  раскрытие  строки s также, как это делается в оболочке командной строки, и
       возвращает результат в структуре, на которую указывает p.  Тип  данных  wordexp_t  —  структура,  которая
       содержит,  по  крайней мере, поля we_wordc, we_wordv и we_offs. Поле we_wordc имеет тип size_t и содержит
       количество слов в раскрытой s. Поле we_wordv имеет тип char ** и указывает на массив найденных слов. Поле
       we_offs имеет тип size_t и (в зависимости от flags,  см.  далее)  используется  для  указания  количества
       начальных элементов в массиве we_wordv, которые должны быть заполнены NULL.
       Функция  wordfree()  освобождает  ранее  выделенную память. Более точно, она не освобождает память своего
       аргумента, а освобождает память, занятую под массив we_wordv и строки, которые в нём содержатся.
   Строковый аргумент
       Так как дополнение производится согласно правилам оболочки командной строки (см. sh(1)) по преобразованию
       параметров в команду, строка s не должна содержать символы, которые  запрещено  передавать  в  параметрах
       команд оболочки. В частности, не должно быть неэкранированных символов новой строки или |, &, ;, <, >, (,
       ), {, } вне контекста подстановки команды или параметра.
       Если  аргумент  s содержит слово, которое начинается с символа комментария #, находящегося не в кавычках,
       то такая ситуация является неопределённой, и непонятно, нужно ли игнорировать слово или все слова, или не
       считать # символом комментария.
   Дополнение
       The expansion done consists of the following stages: tilde expansion  (replacing  ~user  by  user's  home
       directory),  variable substitution (replacing $FOO by the value of the environment variable FOO), command
       substitution (replacing $(command) or `command` by the output of command),  arithmetic  expansion,  field
       splitting, wildcard expansion, quote removal.
       Результат дополнения специальных параметров ($@, $*, $#, $?, $-, $$, $!, $0) не определён.
       Field  splitting is done using the environment variable $IFS.  If it is not set, the field separators are
       space, tab, and newline.
   Массив результата
       Массив we_wordv содержит найденные слова и заканчивается NULL.
   Аргумент флагов
       Аргумент flag представляет собой побитовое объединяющее ИЛИ следующих значений:
       WRDE_APPEND
              Добавлять найденные слова в массив, полученный в результате предыдущего вызова.
       WRDE_DOOFFS
              Вставить we_offs начальных NULL в массив we_wordv (они не считаются в конечном we_wordc).
       WRDE_NOCMD
              Не выполнять подстановку команд.
       WRDE_REUSE
              Аргумент p получен от предыдущего вызова wordexp(), и функция wordfree() не была вызвана. Повторно
              использовать выделенное пространство.
       WRDE_SHOWERR
              Обычно, во время подстановки команды  вывод  stderr  перенаправляется  в  /dev/null.  Этим  флагом
              задаётся отмена такого перенаправления stderr.
       WRDE_UNDEF
              Считать ошибкой, если не определена раскрываемая переменная оболочки.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
       On success, wordexp()  returns 0.  On failure, wordexp()  returns one of the following nonzero values:
       WRDE_BADCHAR
              Недопустимое появление символа новой строки или одного из символов |, &, ;, <, >, (, ), {, }.
       WRDE_BADVAL
              Указана неопределённая переменная оболочки и установлен флаг WRDE_UNDEF.
       WRDE_CMDSUB
              Запрошена подстановка команды, но установлен флаг WRDE_NOCMD, указывающий считать это ошибкой.
       WRDE_NOSPACE
              Не хватает памяти.
       WRDE_SYNTAX
              Синтаксическая ошибка оболочки, например незакрытая скобка или кавычка.
ВЕРСИИ
       wordexp()  and wordfree()  are provided since glibc 2.1.
АТРИБУТЫ
       Описание терминов данного раздела смотрите в attributes(7).
       ┌────────────┬──────────────────────┬───────────────────────────────────────────────────────────────────┐
       │ Интерфейс  │ Атрибут              │ Значение                                                          │
       ├────────────┼──────────────────────┼───────────────────────────────────────────────────────────────────┤
       │ wordexp()  │ Безвредность в нитях │ MT-Unsafe race:utent const:env env sig:ALRM timer locale          │
       ├────────────┼──────────────────────┼───────────────────────────────────────────────────────────────────┤
       │ wordfree() │ Безвредность в нитях │ MT-Safe                                                           │
       └────────────┴──────────────────────┴───────────────────────────────────────────────────────────────────┘
       В  приведённой  выше  таблице  utent  в  race:utent  означает,  что  если  любая  из функций setutent(3),
       getutent(3) или endutent(3) используется одновременно в нескольких нитях программы, то  может  возникнуть
       состязательность  по  данным.  Эти  функции вызываются из wordexp(), поэтому мы используем race:utent для
       напоминания.
СТАНДАРТЫ
       POSIX.1-2001, POSIX.1-2008.
ПРИМЕРЫ
       Результатом следующего примера будет таким же что и при выполнении команды «ls [a-c]*.c».
       #include <stdio.h>
       #include <stdlib.h>
       #include <wordexp.h>
       int
       main(void)
       {
           wordexp_t p;
           char **w;
           wordexp("[a-c]*.c", &p, 0);
           w = p.we_wordv;
           for (size_t i = 0; i < p.we_wordc; i++)
               printf("%s\n", w[i]);
           wordfree(&p);
           exit(EXIT_SUCCESS);
       }
СМ. ТАКЖЕ
       fnmatch(3), glob(3)
ПЕРЕВОД
       Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>  и  Yuri
       Kozlov <yuray@komyakino.ru>
       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
       Если  вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
       на man-pages-ru-talks@lists.sourceforge.net.
Linux man-pages 6.03                            5 февраля 2023 г.                                     wordexp(3)