STDOUTとSTDERRで印刷(両方とも同じファイルにリダイレクトしません)

STDOUTとSTDERRで印刷(両方とも同じファイルにリダイレクトしません)

STDOUTとSTDERRのいずれかをリダイレクトせずに(現在の日付など)コンテンツを印刷したいと思います。

私は試した:

date 1>&2

しかし、これは単にstdoutをstderrにリダイレクトするようですが、これは私が望むものではありません。同じファイルにマージせずに両方を印刷したいです。

役に立つと確信していますが、どのようにtee使用するのかわかりません。

ベストアンサー1

何が必要なのか理解している場合は、tee次のコマンドが解決策です。

your_command 2>&1 | tee /dev/stderr

コマンドの出力(つまりerrors date)は標準出力(使用)にリダイレクトされます2>&1。コマンドを使用すると結果が2倍になりますtee

  • 1を標準出力に。
  • パラメータの2番目のファイル:/dev/stderr

その後、コマンドの結果は次のようになりdateます。

> date 2>&1 | tee /dev/stderr
Sun Dec 11 16:33:35 CET 2022
Sun Dec 11 16:33:35 CET 2022

したがって、>/>>および / を使用して目的のファイルに2>リダイレクトできます。2>>

> date 2>&1 | tee /dev/stderr >file1 2>file2
> cat file1
Sun Dec 11 16:40:59 CET 2022
> cat file2
Sun Dec 11 16:40:59 CET 2022

エラーが発生した場合は、誤ったコマンドを使用してください。例datex:

> datex 2>&1 | tee /dev/stderr >file1 2>file2
> cat file1
bash: datex: command not found...
> cat file2
bash: datex: command not found...

おすすめ記事