about_Special_Characters
簡単な説明
PowerShell がシーケンス内の次の文字を解釈する方法を制御する特殊文字シーケンスについて説明します。
詳細な説明
PowerShell では、標準文字セットの一部ではない文字を表すために使用される一連の特殊文字シーケンスがサポートされています。 これらのシーケンスは、一般に escape シーケンスと呼ばれます。
エスケープ シーケンスは、バックティック文字 (墓のアクセント (ASCII 96) と呼ばれます) で始まり、大文字と小文字が区別されます。 バックティック文字は、 escape 文字とも呼ばれます。
エスケープ シーケンスは、二重引用符 ("
) 文字列に含まれている場合にのみ解釈されます。
PowerShell は、次のエスケープ シーケンスを認識します。
シークエンス | 説明 |
---|---|
`0 |
[Null] |
`a |
アラート |
`b |
バックスペース |
`e |
エスケープ (PowerShell 6 で追加) |
`f |
フォーム フィード |
`n |
改行 |
`r |
キャリッジ リターン |
`t |
水平タブ |
`u{x} |
Unicode エスケープ シーケンス (PowerShell 6 で追加) |
`v |
垂直タブ |
PowerShell には、解析を停止する場所をマークする特別なトークンもあります。 このトークンに続くすべての文字は、解釈されないリテラル値として使用されます。
特殊な解析トークン:
シークエンス | 説明 |
---|---|
-- |
残りの値をパラメーターではなく引数として扱う |
--% |
次の処理の解析を停止する |
~ |
チルダ |
Null ('0)
PowerShell 出力では、null (`0
) 文字が空の領域として表示されます。
この機能を使用すると、PowerShell を使用して、文字列の終了やレコード終了インジケーターなどの null 文字を使用するテキスト ファイルの読み取りと処理を行うことができます。 null 特殊文字は、null 値を格納する$null
変数と同じではありません。
アラート ('a)
アラート (`a
) 文字は、コンピューターのスピーカーにビープ音信号を送信します。
この文字を使用して、差し迫ったアクションについてユーザーに警告することができます。 次の例では、2 つのビープ音信号をローカル コンピューターのスピーカーに送信します。
for ($i = 0; $i -le 1; $i++){"`a"}
Backspace ('b)
バックスペース (`b
) 文字はカーソルを 1 文字戻しますが、文字は削除されません。
この例では、 backup という単語を書き込み、カーソルを 2 回戻します。 次に、新しい位置にスペースを書き込み、その後に out という単語を書き込みます。
"backup`b`b out"
back out
エスケープ ('e)
Note
この特殊文字は、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 コンソールには 8 番目のスペースごとにタブストップがあります。
次の使用例は、各列の間に 2 つのタブを挿入します。
"Column1`t`tColumn2`t`tColumn3"
Column1 Column2 Column3
Unicode 文字 ('u{x})
Note
この特殊文字は、PowerShell 6.0 で追加されました。
Unicode エスケープ シーケンス (`u{x}
) を使用すると、コード ポイントの 16 進数表現で任意の Unicode 文字を指定できます。 これには、基本多言語平面 (>0xFFFF
) の上にある Unicode 文字が含まれ、 (`u{1F44D}
) 文字などの絵文字文字が含まれます。 Unicode エスケープ シーケンスでは、少なくとも 1 つの 16 進数が必要であり、最大 6 桁の 16 進数がサポートされます。 シーケンスの最大 16 進数の値は 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 シェルおよびユーティリティー仕様で指定されている規則です。
Stop-parsing token (--%)
停止解析 (--%
) トークンを使用すると、PowerShell が文字列を PowerShell コマンドおよび式として解釈できなくなります。 これにより、これらの文字列を他のプログラムに渡して解釈できます。
プログラム名の後、およびエラーの原因となる可能性のあるプログラム引数の前に、解析停止トークンを配置します。
この例では、 Icacls
コマンドは停止解析トークンを使用します。
icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F
PowerShell は、次の文字列を Icacls
に送信します。
X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
この 2 番目の例では、変数 $HOME
を cmd.exe /c echo
コマンドに 2 回渡します。
cmd.exe /c echo $HOME --% $HOME
出力は、変数の値がcmd
に渡されるように、$HOME
の最初のインスタンスが PowerShell によって解釈されることを示しています。 $HOME
の 2 番目のインスタンスは、停止解析トークンの後に来るので、リテラル文字列として渡されます。
C:\Users\username $HOME
停止解析トークンの詳細については、 about_Parsingを参照してください。
チルダ (~)
チルダ文字 (~
) は、PowerShell で特別な意味を持ちます。 パスの先頭にある PowerShell コマンドで使用すると、PowerShell はチルダ文字をユーザーのホーム ディレクトリに展開します。 パス内の他の場所でチルダ文字を使用する場合は、リテラル文字として扱われます。
停止解析トークンの詳細については、 about_Parsingを参照してください。
関連項目
PowerShell