Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная
  2. ABS Guide
  3. Часть 4. Материал повышенной сложности
  4. Глава 18. Регулярные выражения

18.2. Globbing -- Подстановка имен файлов

Bash, сам по себе, не распознает регулярные выражения. Но в сценариях можно использовать команды и утилиты, такие как sed и awk, которые прекрасно справляются с обработкой регулярных выражений.

Фактически, Bash может выполнять подстановку имен файлов, этот процесс называется "globbing", но при этом не используется стандартный набор регулярных выражений. Вместо этого, при выполнении подстановки имен файлов, производится распознавание и интерпретация шаблонных символов. В число интерпретируемых шаблонов входят символы * и ?, списки символов в квадратных скобках и некоторые специальные символы (например ^, используемый для выполнения операции отрицания). Применение шаблонных символов имеет ряд важных ограничений. Например, если имена файлов начинаются с точки (например так: .bashrc), то они не будут соответствовать шаблону, содержащему символ *. [49] Аналогично, символ ? в операции подстановки имен файлов имеет иной смысл, нежели в регулярных выражениях.

bash$ ls -l
total 2
 -rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1
 -rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1
 -rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1
 -rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh
 -rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt

bash$ ls -l t?.sh
-rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh

bash$ ls -l [ab]*
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1
 -rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1

bash$ ls -l [a-c]*
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1
 -rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1
 -rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1

bash$ ls -l [^ab]*
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1
 -rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh
 -rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt

bash$ ls -l {b*,c*,*est*}
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1
 -rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1
 -rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt

Bash выполняет подстановку имен файлов при использовании аргументов командной строки без кавычек. Команда echo наглядно демонстрирует это.

bash$ echo *
a.1 b.1 c.1 t2.sh test1.txt

bash$ echo t*
t2.sh test1.txt
Note

Bash предоставляет возможность изменить порядок интерпретации специальных символов во время подстановки имен файлов. Так команда set -f запрещает подстановку, а ключи nocaseglob и nullglob в shopt изменяют характер подстановки.

См. также Пример 10-4.

Notes

[49]

Подстановка таких имен файлов возможна, но только при условии, что символ точки будет явно присутствовать в шаблоне.


~/[.]bashrc # Не будет соответствовать имени ~/.bashrc
~/?bashrc # То же самое.
 # Метасимволы не могут соответствовать символу точки при подстановке имен файлов.

~/.[b]ashrc # Имя ~./bashrc будет соответствовать данному шаблону
~/.ba?hrc # Аналогично.
~/.bashr* # Аналогично.

# Установка ключа "dotglob" отключает такое поведение интерпретатора.
# Спасибо S.C.

Перекрёстные ссылки книги для 18.2. Globbing -- Подстановка имен файлов

  • 18.1. Краткое введение в регулярные выражения
  • Вверх
  • Глава 19. Подоболочки, или Subshells

Book navigation

  • Содержание
  • Часть 1. Введение
  • Часть 2. Основы
  • Часть 3. Углубленный материал
  • Часть 4. Материал повышенной сложности
    • Глава 18. Регулярные выражения
      • 18.1. Краткое введение в регулярные выражения
      • 18.2. Globbing -- Подстановка имен файлов
    • Глава 19. Подоболочки, или Subshells
    • Глава 20. Ограниченный режим командной оболочки
    • Глава 21. Подстановка процессов
    • Глава 22. Функции
    • Глава 23. Псевдонимы
    • Глава 24. Списки команд
    • Глава 25. Массивы
    • Глава 26. Файлы
    • Глава 27. /dev и /proc
    • Глава 28. /dev/zero и /dev/null
    • Глава 29. Отладка сценариев
    • Глава 30. Необязательные параметры (ключи)
    • Глава 31. Широко распространенные ошибки
    • Глава 32. Стиль программирования
    • Глава 33. Разное
    • Глава 34. Bash, версия 2
  • Глава 35. Замечания и дополнения
  • Библиография
  • Приложение A. Дополнительные примеры сценариев
  • Приложение B. Справочная информация
  • Приложение C. Маленький учебник по Sed и Awk
  • Приложение D. Коды завершения, имеющие предопределенный смысл
  • Приложение E. Подробное введение в операции ввода-вывода и перенаправление ввода-вывода
  • Приложение F. Системные каталоги
  • Приложение G. Локализация
  • Приложение H. История команд
  • Приложение I. Пример файла .bashrc
  • Приложение J. Преобразование пакетных (*.bat) файлов DOS в сценарии командной оболочки
  • Приложение K. Упражнения
  • Приложение L. Хронология
  • Приложение M. Авторские права

Последние материалы

  • Приложение scanimage
    1 day ago
  • Утилита sensors
    5 days ago
  • Сканер Rkhunter
    1 week 6 days ago
  • Программа resize2fs
    2 weeks 4 days ago
  • Аудиопроигрыватель QMMP
    3 weeks 3 days ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru