about_Special_Characters
簡単な説明
PowerShell がシーケンス内の次の文字を解釈する方法を制御する特殊文字シーケンスについて説明します。
詳細な説明
PowerShell では、標準文字セットの一部ではない文字を表すために使用される一連の特殊文字シーケンスがサポートされています。 シーケンスは、一般にエスケープ シーケンスと呼ばれます。
エスケープ シーケンスは、バックティック文字 (墓のアクセント (ASCII 96) と呼ばれます) で始まり、大文字と小文字が区別されます。 バックティック文字は、エスケープ文字とも呼ばれます。
エスケープ シーケンスは、二重引用符 ("
) 文字列に含まれている場合にのみ解釈されます。
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 文字戻しますが、文字は削除しません。
この例では、バックアップという単語を書き込み、カーソルを 2 回戻します。 次に、新しい位置にスペースを書き込み、その後に単語 を出力します。
"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 文字を指定できます。 これには、基本多言語平面 () の上にある Unicode 文字が含まれます。これには、サムアップ (`u{1F44D}
>0xFFFF
) 文字などの絵文字文字が含まれます。 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 によって解釈されることを示しています。 2 番目の $HOME
インスタンスは停止解析トークンの後に来るので、リテラル文字列として渡されます。
C:\Users\username $HOME
停止解析トークンの詳細については、about_Parsingを参照してください。
チルダ (~)
チルダ文字 (~
) は、PowerShell で特別な意味を持ちます。 パスの先頭にある PowerShell コマンドで使用すると、PowerShell はチルダ文字をユーザーのホーム ディレクトリに展開します。 パス内の他の場所でチルダ文字を使用する場合は、リテラル文字として扱われます。
停止解析トークンの詳細については、about_Parsingを参照してください。
関連項目
PowerShell