оболочка выполняет разбиение on аргументы перед передачей их в указанную команду. Это означает, что он берет строку (или, в некоторых случаях, строки) и разбивает ее на несколько слов, по умолчанию в пробелах, вкладках и новых строках.
Как упоминалось в Lưu Vĩnh Phúc, обратные косые черты и одинарные кавычки могут использоваться для предотвращения разделения слов на отдельные символы или все между ними, соответственно. Двойные кавычки также работают:
cd "October Fall"
In это частный случай,' и " ведут себя одинаково, но у них есть различия.
' отключает интерпретацию всех специальных символов (даже \), но не может содержать '. " отключает только разделение слов и расширение имени файла (расширение имени файла-это такие вещи, как ls *.mp3 перечислить все файлы с именами, оканчивающимися на .mp3. The * вызывает расширение имени файла). Поскольку " позволяет некоторые расширения аргумента, это полезно, если, например, у вас есть имя файла с пробелом внутри переменной:
$ filename=October\ Fall
$ # ^-- Still need a backslash or quoting to prevent word
$ # splitting here, but the backslash/quotes will not be stored
$ cd $filename
bash: cd: October: No such file or directory
$ cd '$filename'
bash: cd: $filename: No such file or directory
$ cd "$filename"
$ pwd
/path/to/October Fall
отметим, что ' и " не (по умолчанию) вызывают слово расщепления себя, так что это, несмотря на грязный, будет работать для вас:
cd "Oct"'ober F'"all"
это полезно, если у вас есть что-то такое в каталог с именем Octobers' $HOME. The ' в нем разобьется одна пара ' цитирование, а внутри " кавычки $HOME расширится до вашего домашнего каталога. Но любая из этих комбинаций (и многие другие) будет работать безопасно:
cd Octobers\'\ $HOME
cd "Octobers' "'$HOME'
cd "Octobers' "$HOME
cd "Octobers' $HOME"
что - то еще, что нужно иметь в виду, так это то, что многие современные оболочки предлагают завершение вкладки. И Bash, и Zsh (возможно, Ksh, но я его не тестировал) могут расширить часть имени каталога до его полного имени, в комплекте с безопасным экранированием через \s. Так cd Octobers<tab> становится cd Octobers\'\ $HOME. При наличии нескольких совпадений может потребоваться нажать клавишу tab несколько раз. Кроме того, ваша оболочка может не иметь вкладки завершение включено по умолчанию, проверьте документацию оболочки.