Смутно о поведении звездочки в команде ls

На Centos и Debian я попробовал это.

Является ли команда * с командой ls рекурсивным поиском?

Если я начну вводить имя dir и нажать вкладку, я вижу следующее:

# ls /etc/rc<tab> rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rc.local rcS.d/ 

Я думал, что если я положу звездочку на пути, я бы увидел то же самое, но вместо этого сделал рекурсивный поиск:

 # ls /etc/rc* /etc/rc.local /etc/rc0.d: K50netconsole K90network /etc/rc1.d: K50netconsole K90network /etc/rc2.d: K50netconsole S10network /etc/rc3.d: K50netconsole S10network ... 

Команда dir для Windows просто покажет мне каталоги, соответствующие / etc / rc *, как я могу получить это поведение от ls (без использования клавиши вкладок)?

**** Edit / Update:

ОК, так что теперь я понимаю, что * интерпретируется bash вместо команды, но всегда интерпретируется как «перечислять записи файлов и папок», или если я использую его в другом контексте, делает ли он что-то еще, и если это так, if в bash, в котором говорится: «Если * используется с файловыми путями, возвращайте имена файлов и папок, если * используется с rpm (например, rpm -qa post * ), возвращает имена пакетов и т. д.

Asterisk расширяется до того, как он попадает в команду ls , так что это эквивалент

 ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d ... 

который будет перечислять содержимое каждого каталога отдельно.

Вы можете использовать ls -d /etc/rc* для подавления перечисления файлов внутри каталогов или использовать команду, которая просто отображает расширение, например echo /etc/rc* .

По умолчанию, если вы вызываете ls с аргументом каталога, он отображает содержимое каталога. Вы можете изменить это поведение с помощью опции -d . От man ls

 -d, --directory list directory entries instead of contents, and do not derefer‐ ence symbolic links