Почему 'echo *' дает результаты, отличные от 'ls *'?
Например, если вы находитесь в домашнем каталоге и введите ls *
, у вас будут все каталоги в списке, а под именем указанного каталога - файлы, которые он содержит. С другой стороны, если вы печатаете echo *
команда перечислит только каталоги, а не каталоги и контент, который у них есть. Это почему?
1 ответ
В обоих случаях *
расширяется оболочкой.
echo
чем просто печатает параметры, полученные в результате расширения.
ls
проверяет каждый параметр, является ли он каталогом, и перечисляет его содержимое, если оно есть.