トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

shellでエラーと標準出力をリダイレクト

参考

http://technique.sonots.com/?UNIX%2F%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%2F%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%80%81%E3%83%91%E3%82%A4%E3%83%97
http://sonic64.com/2004-03-28.html
https://qiita.com/laikuaut/items/e1cc312ffc7ec2c872fc

まとめ

 基本

記述 意味
> リダイレクト。標準出力をファイルに出力
>> 標準出力をファイルへ追記
< ファイルの内容を標準入力にする
| パイプ。コマンドの出力結果を次のコマンドの標準入力にする

 エラー関連

記述 意味
command >log.txt 2>&1 log.txtへ標準出力と標準エラーを出力
command &> log.txt 上記と同じ
command &>> log.txt 上記と同じ(追記)
command 1> stdout.log 2> stderr.log 標準出力をstdout.logへ、標準エラーをstderr.logへ出力
command | tee -a log.txt 標準出力をlog.txtと画面へ出力
command |& tee -a log.txt 標準出力と標準エラーをlog.txtと画面へ出力

 exec

execにコマンドを引数にせずにリダイレクトのみを指定すると現在のシェルのリダイレクト先を変更できる
記述 意味
exec > log.txt 以降の標準出力をlog.txtにする(最初にファイルをクリア)
exec >> log.txt 以降の標準出力をlog.txtにする(最初から追記)
exec > /dev/tty 以降の標準出力を画面にする
exec 2> log.txt 以降の標準エラーをlog.txtにする
exec &>> log.txt 以降の標準出力、標準エラーをlog.txtにする
exec &> >(tee -a log.txt) 以降の標準出力、標準エラーをlog.txtと画面に出力する

説明

sh, bash 系での標準エラー出力の扱い

1 = 標準出力
2 = 標準エラー出力 

のように番号づけされています。

標準出力と標準エラー出力を両方ともファイルに書き出すには

% [command] > [filename] 2>&1

のようにします。順番が微妙に逆なことに注意。() を使うのなら

% ( [command] 2>&1 ) > [filename] 

ほかのコマンドに標準エラー出力と標準出力両方をパイプで渡したいなら、

% [command] 2>&1 | [command]

csh, tcsh 系での標準エラー出力の扱い

標準エラー出力もファイルに出力する

% [command] >& [filename]

パイプも同様

% [command] |& [command]

/dev/nullに出力

% [command] >& /dev/null

time コマンドも含めたリダイレクト

http://blog.livedoor.jp/hack_cripple/archives/50800592.html

$ (time COMMAND) 2>&1 > output


[カテゴリ: プログラミング言語 > Shell]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2021年02月03日 23時59分51秒