[解決済み] パイプで "tee "を使用しているときに、標準エラーをファイルに書き込むにはどうすればよいですか?
質問
の使い方は知っています。
tee
を書き込むと、出力されます (
標準出力
) の
aaa.sh
から
bbb.out
を、ターミナルに表示したままです。
./aaa.sh | tee bbb.out
また、今度はどのように書けばいいのでしょうか?
標準エラー
という名前のファイルに
ccc.out
を、表示させたまま?
どのように解決するのですか?
ターミナルでSTDERRとSTDOUTをまだ見たいのだと思います。 Josh Kelleyの回答でもいいのですが、私は、STDERRとSTDOUTを表示するために
tail
ログファイルを出力するバックグラウンドで、非常にハック的で不格好です。 exra FD を保持し、終了後に kill してクリーンアップする必要がありますが、これは技術的には
trap '...' EXIT
.
もっといい方法があるのですが、あなたはもうそれを発見しましたね。
tee
.
ただ、標準出力にだけ使うのではなく、標準出力用のTeeと標準エラー用のTeeを用意しましょう。 どのようにこれを実現するのでしょうか? プロセス代替とファイルリダイレクトです。
command > >(tee -a stdout.log) 2> >(tee -a stderr.log >&2)
分割して説明しましょう。
> >(..)
>(...)
(プロセス代行) は FIFO を作成し、その FIFO を使って
tee
をリッスンする。 そして
>
(ファイルリダイレクト) を使って、STDOUT を
command
をFIFOにコピーして、最初の
tee
がリッスンしています。
2番目も同じです。
2> >(tee -a stderr.log >&2)
再びプロセス置換を使用して
tee
プロセスで、STDIN から読み込み、それを
stderr.log
.
tee
はその入力をSTDOUTに出力しますが、その入力は私たちのSTDERRであるため、私たちは
tee
のSTDOUTを再び我々のSTDERRに戻す。 次に、ファイルリダイレクトを使って
command
のSTDERRをFIFOの入力(
tee
のSTDIN)。
参照 http://mywiki.wooledge.org/BashGuide/InputAndOutput
プロセス代替は、あなたが選択したボーナスとして得られる本当に素敵なものの1つです。
bash
とは対照的に、シェルとして
sh
(POSIXまたはBourne)を使用します。
で
sh
の場合、手動で行う必要があります。
out="${TMPDIR:-/tmp}/out.$$" err="${TMPDIR:-/tmp}/err.$$"
mkfifo "$out" "$err"
trap 'rm "$out" "$err"' EXIT
tee -a stdout.log < "$out" &
tee -a stderr.log < "$err" >&2 &
command >"$out" 2>"$err"
関連
-
[解決済み】WSL - GEDIT サーバーを開始することができません。接続できませんでした。接続が拒否されました[closed]。
-
[解決済み] chmod: 'my_script.sh' のパーミッションを変更しました。操作が許可されていない
-
[解決済み] シェルで 'exec ls' を実行すると何が起こるか、またその理由は?[クローズド]。
-
[解決済み] mvで移動先のディレクトリが存在しない場合、作成させる方法はありますか?
-
[解決済み] Tarエラーです。アーカイブ内の予期しないEOF
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] Bashスクリプトでファイルへのheredocを書き込むには?
-
[解決済み] シェルスクリプトからエコーを使わずにパスワードを取得する方法
-
[解決済み】画面に表示したままstdoutをパイプする方法は?(出力ファイルには出力しない)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】sed を使用して部分文字列を抽出する方法
-
[解決済み] ls -al 出力列フィールド
-
[解決済み] insmod エラー: './hello.ko' を挿入: -1 無効なモジュール形式".
-
[解決済み] STRACEがEAGAINを表示する理由(リソースが一時的に使用できないため)
-
[解決済み] lsコマンドの出力をフィルタリングして、2月に作成されたファイルのみを表示させるにはどうすればよいですか?
-
[解決済み] アセンブリの制約
-
[解決済み] php] <defunct>のプロセスを削除することはできますか?
-
[解決済み] Bashでstderrとstdoutをリダイレクトする [重複]。
-
[解決済み】sudoを使用して、書き込み権限のない場所に出力をリダイレクトするにはどうすればよいですか?[解決済み]
-
[解決済み] STDOUTとSTDERRの両方をターミナルとログファイルに出力するにはどうすればよいですか?