Я прочитал много вопросов и ответов, как этот и этот
Я знаю, что подстановочные знаки раскрываются оболочкой перед выполнением команды, и они являются функцией оболочки. Также подстановочные знаки работают с теми командами, которые могут принимать много аргументов. В find . -name *.rb
случае мы имеем более одного файла в текущем каталоге find
даст нам сообщение об ошибке , потому что находка не может принимать несколько аргументов и пути решения этого являются:
find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb
Мы избегаем звездочки и предотвращаем расширение оболочкой, но подстановочные знаки - это особенность оболочки; когда мы убегаем, оболочка звездочки не знает о ее значении и должна найти файл с именем *.rb
, так как же в этом случае расширяется звездочка?
*
в кавычки, то оболочка его не расширит, и аргумент, включающий глоб, будет передан команде, которая может понять глобус, - то же самое для любых команд, которые принимают регулярные выражения, которые всегда должны заключаться в кавычки ...find
[archive filename single argument] [list of files to extract]
").