[解決済み] パイプで "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"
関連
-
Kali Linuxのデフォルトのひげメニューアイコンを変更する方法は?
-
エラーの解決方法 お客様のバージョンは /bin/bash: java: コマンドが見つかりませんでした。
-
makeの低レベルエラー:セパレータストップがない
-
Apache の一般的な設定エラー
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
ゼロからLinuxのisoイメージを作る方法(グラフィックチュートリアル)
-
Linux Mintでフェード効果をオンにする方法は?
-
deepin depth systemはどのような内容でアップデートされましたか?deepinの最新版アップデート内容まとめ
-
[解決済み] libstdc++.so.5: 共有オブジェクトファイルを開くことができない - しかしライブラリはインストールされており最新である
-
[解決済み] Linuxでデータファイルから最初の列(実際には行名)を削除する方法は?
-
[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?
-
[解決済み] Linux/Unixで$PATHを永久に設定する方法 [終了しました].
-
[解決済み] Bashでstderrとstdoutをリダイレクトする [重複]。
-
[解決済み】sudoを使用して、書き込み権限のない場所に出力をリダイレクトするにはどうすればよいですか?[解決済み]
-
[解決済み] STDOUTとSTDERRの両方をターミナルとログファイルに出力するにはどうすればよいですか?