Согласно странице руководства 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, он был бы указан отдельно.
ls p*
и он появился файл , поскольку он существует и ещеls P*
показывает Pictures Публичной папки , поскольку нет ни одного файла , начиная с P . И когда я создал каталог с именем poo , он появился наls p*
Если d * и D * отображают список файлов и папок, соответствующих d * и D *, соответственно, поведение такое же, в вашем тесте должна быть ошибка.
Если вы хотите перечислить только имена папок, а не содержимое папки, вам нужно использовать «-d»:
источник
Как предложено выше,
-d
вариант это путь. Добавлениев моем
~/.bashrc
файле хорошо работает для меня.источник
ld - The GNU linker
, что не позволяет OP компилировать и связывать программы. Используйтеalias lsd='ls -d'
вместо этого. Перед тем как наложить псевдоним, какfoo
всегда,type foo
посмотрите, используется лиfoo
уже как имя для чего-либо, и решите, переопределит ли удобство псевдонима потерю доступа к предыдущемуfoo