bash, Метасимволы задания имён файлов * , ? , конструкции (...) , [...] и [[:class:]]Источник: Bash Pocket Reference by Arnold Robbins Данные метасимволы можно использовать в ls, find и т.д.
* Match any string of zero or more characters. ? Match any single character. [abc ... ] Match any one of the enclosed characters; a hyphen can specify a range (e.g., a-z , A-Z , 0-9 ). [!abc ... ] Match any character not enclosed as above. В конструкции [..] можно использовать диапазоны, например [0-9,a-z], но делать это не рекомендуется, так как системная локаль может содержать дополнительные символы между указанными и введённая команда может начать работать непредсказуемо. * * * POSIX-возможности Поддерживается стандарт: [[:class:]] Данная конструкция означает один символ типа class. Где class может быть: alnum, alpha, ascii, blank, cntrl, digit, graph, lower, print, punct, space, upper, word Пример использования: # ls /etc/rc[[:digit:]].d/ * * * Расширенный синтаксис, используя опцию extglob Для включения опции в начале скрипта надо разместить команду: shopt -s extglob После этого становятся доступны конструкции:
?(pattern) Match zero or one instance of pattern. *(pattern) Match zero or more instances of pattern. +(pattern) Match one or more instances of pattern. @(pattern) Match exactly one instance of pattern. !(pattern) Match any strings that don’t match pattern. Где паттерн это набор символов, разделённых знаком | Также вместо символа может быть использована POSIX-конструкция [[:class:]] В сочетании с POSIX-возможностями этот расширенный синтаксис полезный инструмент, который в простых случаях поможет обойтись без регулярных выражений. #bash 2019-08-20 22:14:10
|