Подстановка имён файлов
После разбиения слов, если только не задан параметр -f (см. Встроенная команда Set), Bash просматривает каждое слово на наличие символов «*», «?» и «[». Если один из этих символов присутствует и не заключён в кавычки, слово считается шаблоном и заменяется отсортированным списком имён файлов, соответствующих этому шаблону (см. Сопоставление с шаблоном), с учётом значения переменной оболочки GLOBSORT (см. Переменные Bash).
Если соответствующие имена файлов не найдены, а параметр оболочки nullglob отключён, слово остаётся без изменений. Если задан параметр nullglob и совпадений не найдено, слово удаляется. Если задан параметр оболочки failglob и совпадений не найдено, Bash выводит сообщение об ошибке и не выполняет команду. Если включён параметр оболочки nocaseglob, сопоставление выполняется без учёта регистра букв.
При использовании шаблона для подстановки имён файлов символ «.» в начале имени файла или сразу после косой черты должен указываться явно, если только не задан параметр оболочки dotglob. Чтобы сопоставить имена файлов . и .., шаблон должен начинаться с «.» (например, «.?»), даже если задан параметр dotglob. Если включён параметр оболочки globskipdots, имена файлов . и .. никогда не считаются совпадениями, даже если шаблон начинается с «.». При сопоставлении с чем-либо, кроме имён файлов, символ «.» не имеет особого значения.
При сопоставлении имени файла символ косой черты всегда должен явно соответствовать косой черте в шаблоне, однако в других контекстах сопоставления ему может соответствовать специальный символ шаблона, как описано ниже (см. Сопоставление с шаблоном).
Описание параметров nocaseglob, nullglob, globskipdots, failglob и dotglob см. в описании shopt в разделе Встроенная команда Shopt.
Переменную оболочки GLOBIGNORE можно использовать, чтобы ограничить набор имён файлов, соответствующих шаблону. Если задана GLOBIGNORE, из списка совпадений удаляются все имена файлов, которые также соответствуют одному из шаблонов в GLOBIGNORE. Если задан параметр nocaseglob, сопоставление с шаблонами в GLOBIGNORE выполняется без учёта регистра. Имена файлов . и .. всегда игнорируются, если GLOBIGNORE задана и не является пустой. Однако установка GLOBIGNORE в непустое значение приводит к включению параметра оболочки dotglob, поэтому все остальные имена файлов, начинающиеся с «.», считаются совпадениями. Чтобы сохранить прежнее поведение и игнорировать имена файлов, начинающиеся с «.», добавьте «.*» в число шаблонов в GLOBIGNORE. Параметр dotglob отключается, если GLOBIGNORE не задана. Сопоставление с шаблонами GLOBIGNORE учитывает значение параметра оболочки extglob.
Значение переменной оболочки GLOBSORT определяет порядок сортировки результатов подстановки путей, как описано ниже (см. Переменные Bash).
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Filename-Expansion.html