bash で
という事を PowerShell でやりたい。
command >&2として、標準出力を標準エラー出力に変更したり
command 2>&1として、標準エラー出力を標準出力に変更したり
command 2>/dev/nullとして、標準エラー出力を捨てたり
という事を PowerShell でやりたい。
「powershell redirect error null」でググったところ以下のページを。
基本、UNIX 系の shell と同様らしいが、
しかし、bash で
標準エラー出力に標準出力の fd (file descriptor: ファイルディスクリプタ、またはファイル記述子)を割り当て、
標準出力に /dev/null を割り当てることで
元々の標準出力を捨てて、元々の標準エラー出力を標準出力に回す
というような使い方が上手くできないようで、以下のような結果になる。
また、bash だと以下のようにして標準出力と標準エラー出力を交換(つまり stdout と stderr を swap)することが出来るがこれも出来ない。
- IT Search+ powerd by マイナビニュース / 【連載】PowerShell Core入門 - 基本コマンドの使い方 / 2019-05-10: 【第50回】リダイレクト演算子
基本、UNIX 系の shell と同様らしいが、
- /dev/null の代わりは $null
- 「標準○○出力」ではなく「○○ストリーム」と呼ぶらしい
- 「標準出力」 →「サクセスストリーム」1
- 「標準エラー出力」 →「エラーストリーム」2
- これらに加えて「ワーニングストリーム」3、「冗長ストリーム」4、「デバッグストリーム」5、「インフォメーションストリーム」6 まであるらしい
しかし、bash で
command 2>&1 >/dev/nullのようにして、
標準エラー出力に標準出力の fd (file descriptor: ファイルディスクリプタ、またはファイル記述子)を割り当て、
標準出力に /dev/null を割り当てることで
元々の標準出力を捨てて、元々の標準エラー出力を標準出力に回す
というような使い方が上手くできないようで、以下のような結果になる。
> Test-NetConnection ::1 -Port 80 |% { echo "[$($_)]" } 警告: TCP connect to (::1 : 80) failed [TestNetConnectionResult] > Test-NetConnection ::1 -Port 80 3>&1 |% { echo "[$($_)]" } [TCP connect to (::1 : 80) failed] [TestNetConnectionResult] > Test-NetConnection ::1 -Port 80 >$null 3>&1 |% { echo "[$($_)]" } > Test-NetConnection ::1 -Port 80 3>&1 >$null |% { echo "[$($_)]" } >見ての通り、標準出力を捨てると、標準出力に回した出力も一緒に捨てられてしまうという結果。
また、bash だと以下のようにして標準出力と標準エラー出力を交換(つまり stdout と stderr を swap)することが出来るがこれも出来ない。
command 3>&1 1>&2 2>&3具体的には
> Test-NetConnection ::1 -Port 80 1>&3 |% { echo "[$($_)]" } 発生場所 行:1 文字:35 + Test-NetConnection ::1 -Port 80 1>&3 |% { echo "[$($_)]" } + ~ リダイレクト演算子の後にファイルが指定されていません。 発生場所 行:1 文字:35 + Test-NetConnection ::1 -Port 80 1>&3 |% { echo "[$($_)]" } + ~ アンパサンド (&) 文字は許可されていません。& 演算子は、今後使用するために予約されています。アンパサンドを二重引用符で囲 み ("&")、文字列の一部として渡してください。 + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingFileSpecificationのように m>&n という記述において n == 1 以外は Windows 10 で現状標準の PowerShell 5.1.18362.752 だとエラーになるようだ。
タグ
コメントをかく