about_Special_Characters
簡短描述
描述控制 PowerShell 如何解譯序列中下一個字元的特殊字元序列。
詳細描述
PowerShell 支援一組特殊字元序列,用來代表不屬於標準字元集的字元。 序列通常稱為 逸出序列。
逸出序列的開頭是反引號字元,稱為嚴重輔色(ASCII 96),且區分大小寫。 反引號字元也可以稱為 逸出字元。
逸出序列只有在包含在雙引號的字串"
中時才會解譯。
PowerShell 會辨識這些逸出序列:
序列 | 描述 |
---|---|
`0 |
Null |
`a |
警示 |
`b |
退格鍵 |
`e |
逸出 (PowerShell 6 中新增) |
`f |
換頁字元 |
`n |
新行 |
`r |
歸位字元 |
`t |
水平 Tab 鍵 |
`u{x} |
Unicode 逸出序列 (PowerShell 6 中新增) |
`v |
垂直 Tab 鍵 |
PowerShell 也有特殊的令牌,可標記您想要剖析停止的位置。 此令牌後面的所有字元都會當做未解譯的常值使用。
特殊剖析權杖:
序列 | 描述 |
---|---|
-- |
將其餘值視為非參數的自變數 |
--% |
停止剖析後續的任何專案 |
~ |
波狀符號 |
Null ('0)
Null (`0
) 字元會顯示為 PowerShell 輸出中的空白空間。
這項功能可讓您使用 PowerShell 來讀取及處理使用 Null 字元的文字檔,例如字串終止或記錄終止指標。 Null 特殊字元不等於$null
儲存 Null 值的變數。
警示 ('a)
警示 (`a
) 字元會將嗶聲訊號傳送給計算機的喇叭。
您可以使用此字元來警告使用者即將執行的動作。 下列範例會將兩個嗶聲訊號傳送至本機計算機的喇叭。
for ($i = 0; $i -le 1; $i++){"`a"}
退格空間 ('b)
backspace (`b
) 字元會將游標往後移動一個字元,但不會刪除任何字元。
此範例會寫入備份一字,然後將游標往後移動兩次。 然後,在新的位置,寫入一個空格,後面接著字 出。
"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
) 字元會前進到下一個製表位,並在該時間點繼續寫入。 根據預設,PowerShell 控制台每隔八個空間就會有製表位。
本範例會在每個數據行之間插入兩個索引標籤。
"Column1`t`tColumn2`t`tColumn3"
Column1 Column2 Column3
Unicode 字符 ('u{x})
注意
此特殊字元已在PowerShell 6.0中新增。
Unicode 逸出序列 (`u{x}
) 可讓您透過其程式代碼點的十六進位表示法指定任何 Unicode 字元。 這包括基本多語平面上方的 Unicode 字元,>0xFFFF
其中包含 Emoji 字元,例如 大拇指 (`u{1F44D}
) 字元。 Unicode 逸出序列至少需要一個十六進位數位,且最多支援六個十六進位數位。 序列 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 殼層和公用程式規格中指定的慣例。
停止剖析權杖 (---%)
停止剖析 (--%
) 標記可防止 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
輸出會顯示的第一個實體 $HOME
是由 PowerShell 解譯,讓變數的值傳遞至 cmd
。 的第二個實例 $HOME
是在停止剖析令牌之後,因此它會以常值字串的形式傳遞。
C:\Users\username $HOME
如需停止剖析令牌的詳細資訊,請參閱 about_Parsing。
蒂爾德 (~)
磚字元 (~
) 在PowerShell中具有特殊意義。 當它與路徑開頭的PowerShell命令搭配使用時,PowerShell 會將磚字元展開至使用者的主目錄。 如果您在路徑中其他地方使用圖文字元,則會將其視為常值字元。
如需停止剖析令牌的詳細資訊,請參閱 about_Parsing。