Как я могу написать пространство в терминале на OS X?

у меня есть имя папки с пробелом между словами. Я использую команду cd что я могу перейти в нужную папку. Как я могу написать пространство в терминале на OS X? Я попытался следовать

MacBook-Pro:TestDrop Alexsander$ cd October Fall
-bash: cd: October: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd OctoberFall
-bash: cd: OctoberFall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October/ Fall
-bash: cd: October/: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October/Fall
-bash: cd: October/Fall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October-Fall
-bash: cd: October-Fall: No such file or directory
MacBook-Pro:TestDrop Alexsander$ cd October_Fall
21
задан Alexander
04.04.2023 9:50 Количество просмотров материала 2677
Распечатать страницу

2 ответа

причина, по которой это не работает, состоит в том, что оболочка разбивает аргументы на пробелы и поэтому думает, что вы вызываете cd С двумя аргументами October и Fall. Побег пробел с \ такой:

cd October\ Fall

другой способ-это положить его в одинарные или двойные кавычки

cd 'October Fall'
cd "October Fall"

или просто перетащите папку в терминал.

но почему бы вам просто не ввести несколько символов и нажать Tab для авто-завершение?

24
отвечен phuclv 2023-04-05 17:38

оболочка выполняет разбиение 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 несколько раз. Кроме того, ваша оболочка может не иметь вкладки завершение включено по умолчанию, проверьте документацию оболочки.

10
отвечен 8bittree 2023-04-05 19:55

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх