Согласно странице руководства bash:
bash сканирует каждое слово на наличие символов *,? и [. Если появляется один из этих символов, слово считается шаблоном и заменяется отсортированным по алфавиту списком имен файлов, соответствующих шаблону.
и из информационного узла для ls
Программа `ls 'выводит информацию о файлах (любого типа, включая каталоги). Опции и аргументы файла могут быть произвольно перемешаны, как обычно.
Для неопционных аргументов командной строки, которые являются каталогами, по умолчанию «ls» перечисляет содержимое каталогов, не рекурсивно, и пропускает файлы с именами, начинающимися с «.». Для других аргументов, не являющихся опциями, по умолчанию `ls 'отображает только имя файла. Если аргументы без опций не указаны, 'ls' выводит содержимое текущего каталога.
поэтому, когда вы даете ls d*
, d * расширяется до отсортированного списка всех имен файлов / каталогов, начинающихся с d. Таким образом, ваша команда становится
ls dump
и поскольку dump является именем каталога, вы получаете список всех файлов в каталоге «dump», но когда вы даете ls D*
, D * расширяется до « Dropbox для загрузки документов рабочего стола », поэтому команда становится
ls Desktop Documents Downloads Dropbox
и так как все это каталоги, вы получаете список файлов в отдельном каталоге. Если бы в текущем каталоге был файл, начинающийся с D, он был бы указан отдельно.