windows 上的反斜杠字符替代品

backslash char alternatives on windows

关于 linux 我可以用不同的方式表示 / 字符:

${HOME:0:1}

因此,例如,cat ${HOME:0:1}etc${HOME:0:1}passwd 将被视为 cat /etc/passwd

有什么办法可以通过 powershell 在 windows 上做同样的事情,在 cmd.exe 上做反斜杠吗?

PowerShell 没有 等同于 POSIX-compatible shell 中可用的 parameter expansions,例如 Bash,其中你的子字符串提取(${HOME:0:1} 在字符位置 0 处获取长度为 1 的子字符串,即变量值 $HOME 的第一个字符)是一个例子(link 是 Bash 手册)。

但是,PowerShell 让这一切变得简单:

以下命令变体是等效的,动态使用 platform-appropriate 路径(目录)分隔符,即 Unix-like 平台上的 /\ 上的 Windows:

# -> '/etc/passwd' on Unix
# -> '\etc\passwd' on Windows
Write-Output "$([System.IO.Path]::DirectorySeparatorChar)etc$([System.IO.Path]::DirectorySeparatorChar)passwd"

# Ditto.
Write-Output ('{0}etc{0}passwd' -f [System.IO.Path]::DirectorySeparatorChar)

另请参阅: