Различные 2 только найдут два пробелов. Если Вы используете '\s'
вместо этого, будут работать оба варианта.
Вы могли легко протестировать это сами, поэтому каков Ваш фактический вопрос?
Наоборот, расстегнут слишком много. CP не нужно разбирать имена файлов, все, что ему нужно сделать, это цикл над ними.
Раскраска, с другой стороны, необходимо увидеть, является ли аргумент подстановочный знак, проверьте список каталогов, чтобы увидеть, что соответствует подстановочным знаком, а затем цикл. И обратите внимание, что оболочка уже способна соответствовать и расширять подстановочные знаки, поэтому распаковка является дублированием функциональности.
-121--70751- Если у вас есть два zip-файлов A.ZIP
и в вашем текущем каталоге
в вашем текущем каталоге, то
$ cp *.zip destination/
расширяется до
$ cp a.zip b.zip destination/
семантика для CP
- скопировать как a.zip
и b.zip
до назначения.
Если вы напечатаете
$ cp \*.zip destination/
это просто «расширяется» на
$ cp '*.zip' destination/
I.E. Он попытается скопировать один файл с именем «* .zip» в пункт назначения, что не то, что вы хотите.
С другой стороны, если вы напечатаете
$ unzip *.zip -d destination/
, он снова будет расширен до
$ unzip a.zip b.zip -d destination/
семантики для Unzip
- найти файл с именем «B.ZIP» в архиве «A.ZIP» , что опять не то, что вы хотите.
Если вы напечатаете
$ unzip \*.zip -d destination/
Команда unzip
не просто пытается расстегнуть файл под названием *. ZIP
Но он будет расстегнут все файлы, заканчивающиеся .zip
.
Разница в том, что обе команды интерпретируют свои аргументы по-разному.
Наоборот, расстегнут слишком много. CP не нужно разбирать имена файлов, все, что ему нужно сделать, это цикл над ними.
Расстеренение, с другой стороны, необходимо увидеть, является ли аргумент подстановочный знак, проверьте список каталогов, чтобы увидеть, что соответствует подстановочным знаком, а затем цикл. И обратите внимание, что оболочка уже способна соответствовать и расширять подстановочные знаки, поэтому распаковка является дублированием функциональности.