Коли ви розширюється до того, що передається . Тобто , якщо у нас є три файли ( , і ) в каталозі насправді працює .ls **lsabcls *ls a b c
Коли Bash не в змозі розгорнутись, він проходить через необроблений рядок¹. Ось чому ви бачите підстановку в помилці, а також не знайдене повідомлення. lsнамагався показати перелік файлу, який буквально називається *.bash*.
То чому б це не розширилося? Ну а за замовчуванням глобалізація (так називається розширення підстановки) не поверне приховані файли. Ви можете змінити це shopt -s dotglob(це не збережеться, якщо ви не вставите його в своє .bashrc- воно може бути відключено за замовчуванням з уважної причини, тому будьте обережні), ось короткий демонстраційний приклад:
$ ls *.bash*
ls: cannot access *.bash*: No such file or directory
$ shopt -s dotglob
$ ls *.bash*
.bash_aliases .bash_history .bash_logout .bashrc .bashrc.save
Виняток з цього - як ви вже показали - коли ви вже чітко заявили, що файли будуть приховані з таким малюнком .bash*. Він просто переосмислює dotglobналаштування за замовчуванням :
$ shopt -u dotglob # unset dotglob
$ ls .bash*
.bash_aliases .bash_history .bash_logout .bashrc .bashrc.save
У будь-якому разі, крім цієї химерності, я сподіваюся, що це допоможе вам зрозуміти, що відбувається під поверхнею.
Є й інші shoptпрапори , які змінюють , як підстановка роботи: extglob, failglob, globstar, nocaseglobі nullglob. Вони та плот інших shoptпрапорів задокументовані як частина посібника Bash .
Аналогічно, сторінка зі співпаданням малюнків повинна добре читати.
¹ Якщо немає failglobабо nullglobвстановлено.