Подстановка скрытых файлов в Bash

Подстановка скрытых файлов в Bash

Я пробую следующие команды в оболочке bash:

$ ls -d .*
.  ..  .a  .ab
$ ls .a*
.a  .ab
$ ls .[!.]*
.a  .ab
$ ls .[!.]?*
.ab

Разве последнее выражение не должно означать "точка, за которой следует ровно один не-точка, за которым следует ноль или более символов"? Почему это не совпадает .a?

решение1

Вы ошибаетесь. Это означает "точка, за которой следует ровно одна не-точка, за которой следует один символ, за которым следует ноль или более символов". .aне имеет достаточного количества символов для сопоставления.

Но на самом деле, просто установите dotglob.

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