[解決済み】bashでstdoutとstderrの両方をパイピングする?
質問
新しいバージョンのbashには
&>
演算子は、(私が正しく理解していれば)標準出力と標準エラー出力両方をファイルにリダイレクトします (
&>>
は、Adrianが明らかにしたように、代わりにファイルに追加します)。
同じことを実現するために、代わりに別のコマンドにパイプを通す一番簡単な方法は何ですか?
例えば、この行の場合。
cmd-doesnt-respect-difference-between-stdout-and-stderr | grep -i SomeError
stdoutとstderrの両方の内容でgrepがマッチするようにしたい(事実上、1つのストリームに統合されている)。
備考 : この質問は、パイピングについて聞いています。 ではなく リダイレクトしているため、現在重複とマークされている質問と重複していません。
解決方法は?
(ただし
&>>file
を追加します。
をファイルに追加し、一方
&>
はリダイレクトし
オーバーライト
を作成します)。
組み合わせるには
stdout
と
stderr
を使うと、後者を前者にリダイレクトすることができます。
2>&1
. これは、例えば、stderr(ファイル記述子2)をstdout(ファイル記述子1)にリダイレクトするものです。
$ { echo "stdout"; echo "stderr" 1>&2; } | grep -v std
stderr
$
stdout
がstdoutに出力されます。
stderr
は標準エラー出力になります。
grep
を見るだけです。
stdout
従って
stderr
が端末に表示されます。
一方
$ { echo "stdout"; echo "stderr" 1>&2; } 2>&1 | grep -v std
$
stdoutとstderrの両方に書き込んだ後。
2>&1
は標準エラー出力を標準エラー出力にリダイレクトし
grep
は両方の文字列を標準入力で見ているため、両方をフィルタリングする。
リダイレクトの詳細については、こちらをご覧ください。 ここで .
例題(POSIX)について。
cmd-doesnt-respect-difference-between-stdout-and-stderr 2>&1 | grep -i SomeError
または
>=bash-4
:
cmd-doesnt-respect-difference-between-stdout-and-stderr |& grep -i SomeError
関連
-
[解決済み] cmake execute_process COMMAND [重複]。
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み] find -exec cp {} でエラー 'find: missing argument to -exec' が発生した場合の解決策。TARGET_DIR + [閉店]。
-
[解決済み] Bashで$()と`の違いはあるのでしょうか?重複] [重複
-
[解決済み] Bashを使ってプログレスインジケータを表示する [重複]。
-
[解決済み] "[0: コマンドが見つかりません]" in Bash [重複].
-
[解決済み] Bash - "fi ;;" の使い方は?
-
[解決済み] Bashのforeachループ
-
[解決済み] Bashでstderrとstdoutをリダイレクトする [重複]。
-
[解決済み] stdoutとstderrの両方をファイルにリダイレクトする方法 [重複]。
-
[解決済み] bashで、標準エラーを別のプロセスにパイプする方法は?