Я заметил, что многие утилиты bash, такие как ls
, cp
, mv
, grep
используют регулярные выражения и сопоставление с шаблоном. Например, символы типа * [] {} и т. д.
Однако я нахожу, что это отличается в некотором отношении от других руководств по регулярным выражениям, которые я нахожу в Интернете. Есть ли какой-то определенный стандарт, которому следуют эти утилиты, или полный список сочетаний клавиш где-то?
Спасибо
решение1
Хотя шаблоны подстановочных знаков, о которых вы говорите, похожи, они не являются регулярными выражениями.шаровые узорыи в этом контексте,узоры ракушек. Они расширяются самой оболочкой, а не такими командами, как ls
, cp
, и т. д. Просто для ясности, эти команды на самом деле не являются «утилитами bash»; это программы, которые могут быть выполненылюбойоболочка.
Когда команда вводится в оболочке, оболочка анализирует токены (слова) и одно из действий, которое она выполняет, — это расширениешаровые узорыв соответствующие имена файлов. В наиболее распространенном случае эти имена файлов затем предоставляются оболочкой в качестве списка аргументов для вызываемой команды.
Стандартизация
Эти шаблоны оболочек были стандартизированы для Unix-подобных операционных систем вPOSIX Спецификация:Обозначение сопоставления с образцом.
Некоторые оболочки (Bash и Korn) идут дальше и расширяют эти шаблоны для реализациирасширенные глобсы. Для получения более подробной информации см. соответствующий раздел наВики Грега.