Какой тип механизма регулярного выражения удар использует?

Можно использовать двойные кавычки:

alias hidden="ls -a | grep '^\.'"

или свяжите больше единственных заключенных в кавычки строк

alias hidden='ls -a | grep '\''^\.'\'

или удалите во всех внутренних кавычках

alias hidden='ls -a | grep ^\\.'
12
23.06.2011, 11:54
3 ответа

удар (и оболочки POSIX в целом) не использует регулярные выражения в case оператор, скорее шаблоны шарика.

Там ограничил поддержку регулярных выражений с помощью =~ оператор; посмотрите детали в: http://mywiki.wooledge.org/BashGuide/Patterns,
который говорит это bash Расширенные регулярные выражения (ERE) использования.

11
27.01.2020, 19:56
  • 1
    Спасибо. Вторая ссылка упоминает, ДО который я предполагаю, GNU ДО. –  Kev 23.06.2011, 12:03

Согласно связанному руководству Bash, Bash (начиная с версии 3.0 +) использование: "диалект Расширенного регулярного выражения (ERE)".

Больше информации о том диалекте может быть найдено здесь.

0
27.01.2020, 19:56

Bash не использует ни один из вышеуказанные виды регулярных выражений в операторах if и case .

Скорее, он использует шаблоны глобусов оболочки, которые менее эффективны, чем любые обычные выражения. Относительно новые версии bash также позволяют использовать расширенные шаблоны глобусов, которые явно равны регулярным выражениям без (строковых) привязок, но включают отрицательные термины, но с синтаксисом, отличным от любого из вышеупомянутых типов регулярных выражений.

Обратите внимание, что расширенные глобусы оболочки должны быть включены перед использованием с shopt -s extglob как в сценарии оболочки, так и в интерактивном режиме.

В единственном исключительном месте, а именно в условной команде [[]] , бинарное отношение = ~ позволяет проверять строку слева на соответствие расширенному регулярному выражению. ERE с правой стороны.

2
27.01.2020, 19:56

Теги

Похожие вопросы