Чтобы дополнить полезный ответ Матиаса Р. Джессена дополнительной справочной информацией:
Заключение в кавычки аргумента, содержащего пробелы, является общей синтаксической необходимостью во всех оболочках, поскольку пробелы без кавычек используются для разделения нескольких аргументов.
Не только пробелы требуют заключения в кавычки, но и любые так называемые метасимволы PowerShell (символы, которые при использовании без кавычек имеют синтаксическая функция); например, передача пути к каталогу с буквальным названием a;b
также требует заключения в кавычки, поскольку в противном случае ;
будет интерпретироваться как разделитель операторов.
Существует несколько стилей цитирования :
Поскольку ваш путь является буквальным и не содержит ссылок на переменные или выражений, лучшим выбором будет '...'
-цитирование (одинарное-цитирование).
Используйте "..."
- заключение в кавычки (двойное заключение в кавычки), если ваш путь содержит переменные или подвыражения, т. е. если вам нужна расширяемая строка (интерполирующая строка).[1]
См. этот ответ для обзора строковых литералов в PowerShell.
Другое, менее распространенное решение — отдельно экранировать символы пробела с помощью `
, управляющего символа PowerShell: cd C:\Users\Robert` Inspiron14
Также обратите внимание:
Функция PowerShell завершение вкладок автоматически применяет кавычки по мере необходимости.
cd..
– это имя встроенной функции в PowerShell, единственной целью которой является подражание cmd.exe
(сомнительно разрешающему) поведению (см. ниже). ; функция выполняет синтаксически правильный вызов Set-Location ..
(проверьте, выполнив ${function:cd..}
), с пробелом, отделяющим имя команды от ее аргумента.
В отличие от cmd.exe
:
К сожалению, встроенная команда cd
cmd.exe
решила не применять свои обычные правила синтаксиса и разрешила такие вызовы, как cd C:\Program Files
.
Он никогда не должен был этого делать: на первый взгляд это удобно, но представляет собой проблемное исключение из обычных правил, которое вызывает путаницу.
Обратите внимание, что cmd.exe
завершение табуляции правильно заключает в кавычки аргументы, содержащие пробелы.
Точно так же cd..
, к сожалению, был разрешен как синтаксически исключительная альтернатива правильному cd ..
- см. комментарии к этому ответу для подробностей.
[1] Примечание. "..."
-цитирование не обязательно, если вы используете ссылки на переменные в пути, при условии, что любые литеральные компоненты не требуют заключения в кавычки; например, $HOME\foo
можно без кавычек, тогда как "
рядом с "$HOME\foo bar"
необходимы. С подвыражениями ($(...)
), правила усложняются, поэтому проще всего использовать < em>всегда используйте с ними "..."
-цитирование.
person
mklement0
schedule
20.09.2020
cd C:\Users\Robert Inspiron14
наcd 'C:\Users\Robert Inspiron14'
- person Mathias R. Jessen   schedule 20.09.2020