Является ли globing особенностью оболочки?

Я прочитал много вопросов и ответов вроде этого и этого

Я знаю, что подстановочные символы расширяются оболочкой перед запуском команды, и они являются особенностью оболочки. Также подстановочные знаки работают с теми командами, которые могут принимать множество аргументов. В find . -name *.rb find . -name *.rb если у нас есть более одного файла в текущем каталоге, find даст нам ошибку, потому что find не может принять несколько аргументов, и способы решения этой проблемы:

 find . -name "*.rb" find . -name '*.rb' find . -name \*.rb 

Мы избегаем звездочки и предотвращаем расширение оболочки, но подстановочные знаки являются особенностью оболочки; когда мы выходим из оболочки звездочки, не знаем о ее значении, и он должен найти файл с именем *.rb , поэтому как расширяется звездочка в этом случае?

Да, оболочка понимает * как все файлы с любыми символами в каталоге и *.rb как все файлы с любыми символами и заканчивая .rb , и расширяет ее как таковую.

Команда find сама принимает глобусы.

Если вы не процитируете * то оболочка будет расширять его до того, как команда find увидит свой аргумент, поэтому вместо *.rb glob *.rb имена всех файлов, соответствующих glob в каталоге, будут переданы для find , и find попытается интерпретировать их как аргументы, которые, вероятно, приведут к ошибке или, по крайней мере, не к тому, что вы хотите (она будет работать корректно, только если в текущем каталоге нет соответствующих файлов)