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 让这一切变得简单:
将任意表达式甚至整个语句的结果嵌入到 expandable (double-quoted) string ("..."
), using $(...)
, the subexpression operator.
将任何表达式或命令(管道)的结果作为参数传递给命令,通过将其包含在 (...)
中,grouping operator.
以下命令变体是等效的,动态使用 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)
另请参阅:
关于 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 让这一切变得简单:
将任意表达式甚至整个语句的结果嵌入到 expandable (double-quoted) string (
"..."
), using$(...)
, the subexpression operator.将任何表达式或命令(管道)的结果作为参数传递给命令,通过将其包含在
(...)
中,grouping operator.
以下命令变体是等效的,动态使用 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)
另请参阅: