Можно использовать двойные кавычки:
alias hidden="ls -a | grep '^\.'"
или свяжите больше единственных заключенных в кавычки строк
alias hidden='ls -a | grep '\''^\.'\'
или удалите во всех внутренних кавычках
alias hidden='ls -a | grep ^\\.'
удар (и оболочки POSIX в целом) не использует регулярные выражения в case
оператор, скорее шаблоны шарика.
Там ограничил поддержку регулярных выражений с помощью =~
оператор; посмотрите детали в: http://mywiki.wooledge.org/BashGuide/Patterns,
который говорит это bash
Расширенные регулярные выражения (ERE) использования.
Bash не использует ни один из вышеуказанные виды регулярных выражений в операторах if
и case
.
Скорее, он использует шаблоны глобусов оболочки, которые менее эффективны, чем любые обычные выражения. Относительно новые версии bash также позволяют использовать расширенные шаблоны глобусов, которые явно равны регулярным выражениям без (строковых) привязок, но включают отрицательные термины, но с синтаксисом, отличным от любого из вышеупомянутых типов регулярных выражений.
Обратите внимание, что расширенные глобусы оболочки должны быть включены перед использованием с
shopt -s extglob
как в сценарии оболочки, так и в интерактивном режиме.
В единственном исключительном месте, а именно в условной команде [[]]
, бинарное отношение = ~
позволяет проверять строку слева на соответствие расширенному регулярному выражению. ERE с правой стороны.