about_Special_Characters
簡単な説明
PowerShell がシーケンス内の次の文字を解釈する方法を制御する特殊文字シーケンスについて説明します。
長い説明
PowerShell では、標準文字セットの一部ではない文字を表すために使用される特殊文字シーケンスのセットがサポートされています。 シーケンスは、一般に エスケープ シーケンスと呼ばれます。
エスケープ シーケンスは、バックティック文字 (グレーブ アクセント (ASCII 96) と呼ばれます) で始まり、大文字と小文字が区別されます。 バックティック文字は 、エスケープ文字とも呼ばれます。
エスケープ シーケンスは、二重引用符 ("
) 文字列に含まれている場合にのみ解釈されます。
PowerShell は、次のエスケープ シーケンスを認識します。
Sequence | 説明 |
---|---|
`0 |
[Null] |
`a |
アラート: |
`b |
バックスペース |
`e |
エスケープ (PowerShell 6 で追加) |
`f |
フォーム フィード |
`n |
改行 |
`r |
キャリッジ リターン |
`t |
水平タブ |
`u{x} |
Unicode エスケープ シーケンス (PowerShell 6 で追加) |
`v |
垂直タブ |
PowerShell には、解析を停止する場所をマークする特別なトークンもあります。 このトークンに続くすべての文字は、解釈されないリテラル値として使用されます。
特殊な解析トークン:
Sequence | 説明 |
---|---|
-- |
残りの値をパラメーターではなく引数として扱う |
--% |
その後の解析を停止する |
Null ('0)
Null (`0
) 文字は、PowerShell 出力に空の領域として表示されます。
この機能を使用すると、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 エスケープ シーケンスの詳細については、「 ANSI_escape_code」を参照してください。
次の例では、前景色が緑色のテキストを出力します。
$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.
パラメーターの終了トークン (--
)
パラメーターの終了トークン (--
) は、それに続くすべての引数が、その周囲に二重引用符が配置されたかのように、実際の形式で渡されることを示します。 たとえば、 を使用すると --
、引用符を使用したり、パラメーターとして解釈したりせずに文字列 -InputObject
を出力できます。
Write-Output -- -InputObject
-InputObject
これは、POSIX シェルとユーティリティの仕様で指定されている規則です。
Stop-parsing token (--%)
stop-parsing (--%
) トークンを使用すると、PowerShell が文字列を PowerShell コマンドおよび式として解釈できなくなります。 これにより、これらの文字列を解釈のために他のプログラムに渡すことができます。
プログラム名の後、およびエラーを引き起こす可能性のあるプログラム引数の前に、解析停止トークンを配置します。
この例では、 コマンドは Icacls
停止解析トークンを使用します。
icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F
PowerShell は、次の文字列を に送信します Icacls
。
X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
別の例を示します。 showArgs 関数は、渡された値を出力します。 この例では、 という名前 $HOME
の変数を関数に 2 回渡します。
function showArgs {
"`$args = " + ($args -join '|')
}
showArgs $HOME --% $HOME
出力では、最初のパラメーターの変数 $HOME
が PowerShell によって解釈され、変数の値が関数に渡されることを確認できます。 の 2 番目の $HOME
使用は、停止解析トークンの後に来るので、文字列 "$HOME" が解釈なしで関数に渡されます。
$args = C:\Users\username|--%|$HOME
停止解析トークンの詳細については、「 about_Parsing」を参照してください。