#navi(../)
* teeコマンドでstderr(標準エラー)も対象にする(出力する) [#a82d751b]
teeコマンドを以下のように使用すると標準エラー(stderr)はファイルに出力されません。
本資料では、teeを使って標準入力(stdout), 標準エラー(stderr)の両方をファイルに出力する方法を記します。
 コマンド | tee 出力ファイル名

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連資料 [#n1bead85]
-[[2>&1をでバックグラウンド実行の&は何処に記述する?>逆引きUNIXコマンド/2>&1をでバックグラウンド実行の&は何処に記述する?]]
-[[標準エラー出力をファイルに出力する方法>逆引きUNIXコマンド/標準エラー出力をファイルに出力する方法]]
-[[echoコマンドの出力を標準エラー(stderr)に出力する方法>逆引きUNIXコマンド/echoコマンドの出力を標準エラー(stderr)に出力する方法]]
-[[画面出力しながらファイルにも出力したい・teeコマンド>逆引きUNIXコマンド/画面出力しながらファイルにも出力したい]]
-[[設定でstdout,stderrの出力先をファイルにする>逆引きシェルスクリプト/設定でstdout,stderrの出力先をファイルにする]]

* 標準エラー(stderr)を標準入力(stdout)に出力するようにする [#v158432f]
以下の構文のようにすればteeにより標準エラー(stderr)を標準入力(stdout)の両方を指定したファイルに出力することができます。~
標準エラー(stderr)を標準入力(stdout)などについては、上記の関連資料を参照してください。
 コマンド 2>&1 | tee 出力ファイル名

* 実際に試してみる [#g6661de7]
以下はechoコマンドを使ってstdout(標準出力)とstderr(標準エラー出力)に文字列を出力するシェルスクリプトを作成し実行したときの結果です。
#ref(outmsg.zip)
 #/bin/bash
 
 echo output stdout
 echo output stderr 1>&2

** teeのみを使用して実行する [#a22b95b1]
stderrはteeで指定したファイルに出力されず端末に表示される通常の使用方法で実行してみます。
+ テスト用シェルスクリプトをchmodコマンドで実行でききるようにします。
 $ chmod +x outmsg.sh
+ シェルスクリプトの出力結果をteeコマンドにパイプで渡して実行します。
 $ ./outmsg.sh | tee tee1.log
 output stderr
 output stdout
+ teeで指定したファイル内容をcatコマンドで表示するとstdout(標準出力)のみファイルに出力されています。
 $ cat tee1.log
 output stdout

** 2>&1を利用してteeにパイプで渡してみる [#t32363db]
以下の構文で標準出力(stdout)、標準エラー出力(stderr)の両方がteeで指定したファイル名に出力されます。
 コマンド 2>&1 | tee 出力ファイル名
+実行権限を与えたoutmsg.shシェルスクリプトを実行します。
 $ ./outmsg.sh 2>&1 | tee tee2.log
 output stdout
 output stderr
+teeで指定したファイル名をcatコマンドで内容を出力すると標準出力(stdout)、標準エラー出力(stderr)の両方がteeで指定したファイル名に出力sされています。
 $ cat tee2.log
 output stdout
 output stderr

以上、teeコマンドで標準出力(stdout)、標準エラー出力(stderr)の両方を出力する方法でした。

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS