このエントリーをはてなブックマークに追加


teeコマンドでstderr(標準エラー)も対象にする(出力する)

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

コマンド | tee 出力ファイル名

関連資料

標準エラー(stderr)を標準入力(stdout)に出力するようにする

以下の構文のようにすればteeにより標準エラー(stderr)を標準入力(stdout)の両方を指定したファイルに出力することができます。
標準エラー(stderr)を標準入力(stdout)などについては、上記の関連資料を参照してください。

コマンド 2>&1 | tee 出力ファイル名

実際に試してみる

以下はechoコマンドを使ってstdout(標準出力)とstderr(標準エラー出力)に文字列を出力するシェルスクリプトを作成し実行したときの結果です。

#/bin/bash

echo output stdout
echo output stderr 1>&2

teeのみを使用して実行する

stderrはteeで指定したファイルに出力されず端末に表示される通常の使用方法で実行してみます。

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

2>&1を利用してteeにパイプで渡してみる

以下の構文で標準出力(stdout)、標準エラー出力(stderr)の両方がteeで指定したファイル名に出力されます。

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

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



添付ファイル: fileoutmsg.zip 525件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-10-27 (木) 10:21:05