регулярные выражения / сопоставление с образцом в командной строке Ubuntu

регулярные выражения / сопоставление с образцом в командной строке Ubuntu

Я заметил, что многие утилиты bash, такие как ls, cp, mv, grepиспользуют регулярные выражения и сопоставление с шаблоном. Например, символы типа * [] {} и т. д.

Однако я нахожу, что это отличается в некотором отношении от других руководств по регулярным выражениям, которые я нахожу в Интернете. Есть ли какой-то определенный стандарт, которому следуют эти утилиты, или полный список сочетаний клавиш где-то?

Спасибо

решение1

Хотя шаблоны подстановочных знаков, о которых вы говорите, похожи, они не являются регулярными выражениями.шаровые узорыи в этом контексте,узоры ракушек. Они расширяются самой оболочкой, а не такими командами, как ls, cp, и т. д. Просто для ясности, эти команды на самом деле не являются «утилитами bash»; это программы, которые могут быть выполненылюбойоболочка.

Когда команда вводится в оболочке, оболочка анализирует токены (слова) и одно из действий, которое она выполняет, — это расширениешаровые узорыв соответствующие имена файлов. В наиболее распространенном случае эти имена файлов затем предоставляются оболочкой в ​​качестве списка аргументов для вызываемой команды.

Стандартизация

Эти шаблоны оболочек были стандартизированы для Unix-подобных операционных систем вPOSIX Спецификация:Обозначение сопоставления с образцом.

Некоторые оболочки (Bash и Korn) идут дальше и расширяют эти шаблоны для реализациирасширенные глобсы. Для получения более подробной информации см. соответствующий раздел наВики Грега.

Связанный контент