我在使用 PowerShell 前进时遇到问题。我可以向上移动目录,但不能向下移动。情况是这样的:
我打开 PowerShell 并输入“pwd”命令,它显示我当前位于 PS C:\Users\Robert Inspiron14>
我输入命令“cd..”,现在我移动到 PS C:\Users>
然后,我尝试通过键入以下内容来更改目录:“cd C:\Users\Robert Inspiron14”,但我无法这样做。不幸的是,由于缺乏声誉,我还不能发布图片。
我可以在 CMD 中执行更改,但不能在 PowerShell 中执行更改。另外,我不知道如何将用户从“Robert Inspiron14”更改为“Robert”。如有任何帮助,我们将不胜感激!
在 PowerShell 可以执行您的
cd
命令之前,它需要解析它,PowerShell 的解析器会像这样解释您的命令:
cd C:\Users\Robert Inspiron14
\/ \_____________/ \________/
Command Name | |
argument 1 |
argument 2
换句话说,
C:\Users\Robert
和Inspiron14
被解释为单独的参数。
这两个参数都不是有效目录的路径,因此
cd
(或者更确切地说 Set-Location
,其中 cd
是别名)会抛出错误。
您可以通过使用引号限定其边界来强制 PowerShell 将
C:\Users\Robert Inspiron14
识别为单个字符串参数("
和 '
都可以):
cd 'C:\Users\Robert Inspiron14'
about_Parsing
帮助主题中阅读有关 PowerShell 如何解析命令表达式的更多信息
用更多背景信息来补充 Mathias R. Jessen 的有用答案:
引用包含空格的参数是所有 shell中的一般语法必要性,因为未加引号的空格用于分隔多个参数。
不仅需要引用空格,还需要使用PowerShell 的任何所谓的元字符(这些字符在不加引号的情况下使用时具有语法功能);例如,将路径传递到字面名为
a;b
的目录也需要引用,因为 ;
否则会被解释为 语句分隔符。
cmd.exe
都多;有关完整列表,请参阅此答案。
引用样式:
文字 - 它不包含变量引用或表达式 - 逐字(单引号)字符串 ('...'
cd 'C:\Users\Robert Inspiron14'
变量或子表达式,则必须使用 可扩展(双引号)字符串 ("..."
cd "$HOME\Documents"
是单独使用`
转义空格字符,即所谓的backtick,PowerShell的转义字符:
cd C:\Users\Robert` Inspiron14
自动 根据需要应用引用。
的路径(也)需要引用或通过变量表示,则出于语法原因,它必须通过&
(即调用运算符)调用 - 请参阅this回答.
cd..
是PowerShell
中内置函数的名称,其唯一目的是模拟
cmd.exe
的(可疑的宽容)行为(见下文);该函数执行语法正确的
Set-Location ..
调用(通过执行 ${function:cd..}
进行验证),并用空格分隔命令名称与其参数。
cmd.exe
cmd.exe
的内置
cd
命令决定not强制执行其通常的语法规则,并且启用了诸如
cd C:\Program Files
之类的调用。
它不应该这样做:虽然乍一看很方便,但它构成了通常规则中的一个有问题的例外,会引起混乱。
请注意,cmd.exe
的
制表补全正确引用了包含空格的参数。 同样,不幸的是,
cd..
被允许作为正确的
cd ..
的句法特殊替代品 - 有关详细信息,请参阅此答案的评论。
"..."
- 如果您在路径中使用
variable引用,则并不严格需要引用,只要任何 literal 组件不需要引用即可;例如,
$HOME\foo
无需引号即可,而 "
周围的 "$HOME\foo bar"
是必需的。使用 子表达式(
$(...)
),规则变得更加复杂,因此最简单的方法是始终使用
"..."
-引用它们。