異なるシェルの標準出力と標準エラー出力を組み合わせるにはどうすればよいですか?


18

私はいくつかのシェルの答えを知っています。たとえば、cmd.exe次のことができます。

some.exe > out.txt 2>&1

他のシェル(bash、ksh、tcsh、powershellなど)でも同じことをどのように実現しますか?

回答:


16

魚の殻

標準出力と標準エラーの両方をファイルall_output.txtにリダイレクトするには、次のように記述できます。

echo Hello > all_output.txt ^&1

3
出力を次のコマンドにパイピングする場合は、2> |を使用します 代わりに:echo Hello 2> | 少ない
Jeffrey04

パイピング構文が変更された可能性があります。私の魚の貝は両方に同じ構文「^&1」を使用します。
キースベントラップ

2>&1も機能します— ^本質的に魚の略記です>22>| lessまたは^| less単独 stderr のみをパイプすることに注意してください。私たちとエラーの両方をパイプするために、行う^&1 | less
ベニチェルニアフスキーパスキン

outとerrの両方をリダイレクト/パイピングするための構文の省略形はまだ議論中ですgithub.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-Paskin


2

ではPowerShellのそれはまったく同じです。

2>&1 get-process none、powershell 2>&1にエラーを送信します
          成功出力ストリーム。

(からabout_Redirection)。

In bashとksh少なくとも、この方法で動作することもわかっています。

これは一般的な慣習のようです。

それを見つける簡単な方法は、シェルのmanページを開いて検索を行うことです&1(with /を入力してから&1)。これは他の状況ではめったに起こりません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.