Значение «» в шаблоне глобуса

Я новичок Linux / Unix. Я читал о «Glob» и «Globing Pathnames», и я нашел эту странную (мне) часть в man-страницах :

«[–0]» соответствует трем символам «-», «.», «0», так как «/» невозможно сопоставить.

Я запутался! Как две тире и 0 совпадают . ? Какова роль / характера здесь? Это ошибка на странице руководства?

Я сделал поиск, чтобы найти объяснение для этого, без везения.

2 Solutions collect form web for “Значение «» в шаблоне глобуса”

Как объясняется в начале этого параграфа на этой странице man , символ «-», если он помещается между двумя символами , представляет собой диапазон символов, а также символ «-», когда он ставится как первый или последний символ между скобками , имеет буквальное значение. Итак, первая тире действительно означает символ «-», а вторая тире – спецификатор диапазона. Таким образом, весь шаблон состоит из всех символов между '-' и '0', которые в локали C / POSIX (но обычно не в других):

 - . / 0 

и поскольку «/» не может быть сопоставлен , шаблон соответствует трем символам «-», «.», «0».

Это не имеет ничего общего с самими страницами man: это описание синтаксиса шаблонов glob, к которым относится страница man, о которой вы смотрите.

В шаблоне glob скобки ограничивают набор символов. Например, [abc] соответствует любому из символов a , b или c . Шаблон fo[abc] соответствует foa , fob и foc (но не, например, foo , fo или foab ).

Внутри скобок символ - имеет особое значение: он используется для формирования диапазона символов. Поэтому вместо сопоставления 0 , - или 9 шаблон [0-9] соответствует любой цифре. Диапазоны могут комбинироваться с другими диапазонами и одиночными символами; например, [A-Za-z_] в кодировке ASCII соответствует любой букве или подчеркиванию.

Знак минус интерпретируется только как индикатор диапазона, если это будет синтаксически разумным: если это первый или последний символ внутри скобок, или если он приходит сразу после другого диапазона, - означает сам. Таким образом, в [--0] первое - обозначает себя, а второе - индикатор диапазона, поэтому этот шаблон соответствует любому символу, который находится между - и 0 в текущей локали.

В кодировке ASCII этот диапазон охватывает следующие 4 символа: - . , / , 0 . Символ / не может отображаться внутри имени файла, поскольку он всегда интерпретируется как разделитель каталога; поэтому шаблон [--0] соответствует только 3 символам - [--0] и 0 .

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

Большинство движков регулярных выражений используют тот же синтаксис для диапазонов символов, что и шаблоны оболочки оболочки, с двумя отличиями:

  • В шаблоне glob, если первый символ после открытия скобки является a ! , шаблон соответствует всем символам, которые не находятся в наборе. В регулярном выражении символ ^ играет ту же роль. Некоторые раковины поддерживают ^ а также ! ,
  • Некоторые варианты регулярных выражений позволяют \ сделать следующий символ утрачивающим свое особое значение, например [\[\]\-a] соответствует [ , ] , - или a . В других вариантах регулярного выражения и в шаблонах glob обратная косая черта в наборах символов не имеет особого значения. Если ] установлен в набор, он должен быть первым (невозможно указать пустой набор: [] – неполный шаблон, соответствующий закрывающей скобке или любому символу, который приходит после этого).
  • find (1): как применяется групповой символ звезды для отказа от некоторых имен файлов?
  • Переместить каждый файл, который не является каталогом
  • Шаблоны с тремя точками
  • Имя файла Regex с несколькими цифрами
  • Перечислите все файлы, заканчивающиеся на 10 или 11 или 12
  • Linux и Unix - лучшая ОС в мире.