当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于特殊字符

作者:精品下载站 日期:2024-12-14 02:18:18 浏览:14 分类:玩电脑

关于特殊字符


简短描述

描述控制 PowerShell 如何解释序列中下一个字符的特殊字符序列。

详细描述

PowerShell 支持一组特殊字符序列,用于表示不属于标准字符集的字符。这些序列通常称为转义序列

转义序列以反引号字符开头,称为重音符号 (ASCII 96),并且区分大小写。反引号字符也可以称为转义字符

仅当转义序列包含在双引号 (") 字符串中时才会被解释。

PowerShell 可识别这些转义序列:

`0

无效的

`a

警报

`b

退格键

`e

转义(在 PowerShell 6 中添加)

`f

换页

`n

新线

`r

回车符

`t

水平制表符

`u{x}

Unicode 转义序列(在 PowerShell 6 中添加)

`v

垂直标签

PowerShell 还有一个特殊的标记来标记您想要解析停止的位置。此标记后面的所有字符都用作不被解释的文字值。

特殊解析标记:

--

将其余值视为参数而不是参数

--%

停止解析后面的任何内容

~

波形符

空(`0)

空 (`0) 字符在 PowerShell 输出中显示为空格。此功能允许您使用 PowerShell 读取和处理使用空字符的文本文件,例如字符串终止符或记录终止指示符。 null 特殊字符不等同于存储 null 值的 $null 变量。

警报(`a)

警报 (`a) 字符向计算机的扬声器发送蜂鸣信号。您可以使用此字符来警告用户即将发生的操作。以下示例向本地计算机的扬声器发送两声蜂鸣信号。

for ($i = 0; $i -le 1; $i++){"`a"}

退格键 (`b)

退格 (`b) 字符将光标向后移动一个字符,但不会删除任何字符。

该示例写入单词backup,然后将光标向后移动两次。然后,在新位置写一个空格,后跟单词out

"backup`b`b out"
back out

转义 (`e)

笔记

这个特殊字符是在 PowerShell 6.0 中添加的。

转义 (`e) 字符最常用于指定虚拟终端序列(ANSI 转义序列),该序列修改文本的颜色和其他文本属性(例如粗体和下划线)。这些序列还可用于光标定位和滚动。 PowerShell 主机必须支持虚拟终端序列。您可以检查 $Host.UI.SupportsVirtualTerminal 的布尔值来确定是否支持这些 ANSI 序列。

有关 ANSI 转义序列的更多信息,请参阅 Wikipedia 中的 ANSI 转义代码文章。

以下示例输出具有绿色前景色的文本。

$fgColor = 32 # green
"`e[${fgColor}mGreen text`e[0m"
Green text

换页 (`f)

换页符(`f)是一条打印指令,用于弹出当前页并继续打印下一页。换页符仅影响打印文档。它不影响屏幕输出。

新行 (`n)

新行 (`n) 字符会在该字符后立即插入换行符。

此示例演示如何使用换行符在 Write-Host 命令中创建换行符。

"There are two line breaks to create a blank line`n`nbetween the words."
There are two line breaks to create a blank line

between the words.

回车符 (`r)

回车符 (`r) 字符将输出光标移动到当前行的开头并继续写入。当前行上的所有字符都将被覆盖。

在此示例中,回车符之前的文本将被覆盖。

Write-Host "These characters are overwritten.`rI want this text instead "

请注意,`r 字符之前的文本并未被删除,而是被覆盖。

I want this text instead written.

水平制表符 (`t)

水平制表符 (`t) 字符前进到下一个制表位并在该点继续写入。默认情况下,PowerShell 控制台每八个空格就有一个制表位。

此示例在每列之间插入两个制表符。

"Column1`t`tColumn2`t`tColumn3"
Column1         Column2         Column3

Unicode 字符 (`u{x})

笔记

这个特殊字符是在 PowerShell 6.0 中添加的。

Unicode 转义序列 (`u{x}) 允许您通过其代码点的十六进制表示来指定任何 Unicode 字符。这包括基本多语言平面 (> 0xFFFF) 之上的 Unicode 字符,其中包括表情符号字符,例如竖起大拇指 (`u{1F44D})特点。 Unicode 转义序列需要至少 1 个十六进制数字,最多支持 6 个十六进制数字。该序列的最大十六进制值为10FFFF

此示例输出向上向下箭头 (↕) 符号。

"`u{2195}"

垂直制表符 (`v)

垂直制表符 (`v) 字符前进到下一个垂直制表位,并在该点写入剩余的输出。垂直选项卡的呈现取决于设备和终端。

Write-Host "There is a vertical tab`vbetween the words."

以下示例显示了一些常见环境中垂直选项卡的渲染输出。

Windows 控制台主机应用程序将 (`v) 解释为不添加额外空格的特殊字符。

There is a vertical tab♂between the words.

Windows 终端将垂直制表符呈现为回车符和换行符。输出的其余部分打印在下一行的开头。

There is a vertical tab
between the words.

在打印机或基于 UNIX 的控制台中,垂直制表符前进到下一行并在该点写入剩余的输出。

There is a vertical tab
                       between the words.

线路延续

反引号字符也可以用在行尾,作为向 PowerShell 解析器发出的信号,表明该命令在下一行继续。有关详细信息,请参阅 about_Parsing。

参数结束标记 (--)

参数结束标记 (--) 指示其后面的所有参数都将以实际形式传递,就像在它们周围放置双引号一样。例如,使用 -- 您可以输出字符串 -InputObject 而不使用引号或将其解释为参数:

Write-Output -- -InputObject
-InputObject

这是 POSIX Shell 和实用程序规范中指定的约定。

停止解析标记 (--%)

停止解析 (--%) 标记可防止 PowerShell 将字符串解释为 PowerShell 命令和表达式。这允许将这些字符串传递给其他程序进行解释。

将停止解析标记放在程序名称之后和可能导致错误的程序参数之前。

在此示例中,Icacls 命令使用停止解析标记。

icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F

PowerShell 将以下字符串发送到 Icacls

X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

在第二个示例中,我们将变量 $HOME 传递给 cmd.exe /c echo 命令两次。

cmd.exe /c echo $HOME --% $HOME

输出显示 PowerShell 解释了 $HOME 的第一个实例,以便将变量的值传递给 cmd$HOME 的第二个实例位于停止解析标记之后,因此它作为文字字符串传递。

C:\Users\username  $HOME

有关停止解析标记的更多信息,请参阅 about_Parsing。

波形符 (~)

波形符 (~) 在 PowerShell 中具有特殊含义。当它在路径开头与 PowerShell 命令一起使用时,PowerShell 会将波浪号字符扩展为用户的主目录。如果您在路径中的其他任何位置使用波浪号字符,它将被视为文字字符。

有关停止解析标记的更多信息,请参阅 about_Parsing。

参见

  • about_引用_规则

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯