Hi.Adachinです。

 

本日は標準出力と標準エラー出力についてです。

 

ちょいと先輩に突っ込まれて&パニクったのでブログします。

しかも毎回忘れがちなので自分なりにまとめやした( ー`дー´)キリッ

これを脳に叩き込めばlinux力あるね!と言われるので頑張りましょう(・∀・)

ちなみにシェルによって違うので今回はbashのみのまとめとなります。


■標準出力とは

画面に出力する文字列のこと(実行結果)


■標準エラー出力とは

シェルで実行するとエラーメッセージが出ること


■標準エラー出力として出力する場合

1.その前にファイルディスクリプタとは

0:標準入力(stdin)1:標準出力(stdout)2:標準エラー出力(stderr)

2.あとリダイレクト[>]とは

を!覚えましょう!

で、標準エラー出力として出力する場合は

・1>&2とは

1の出力先を2の出力先と同じものに設定するという意味
例だと
「adachin>&dachin」は「adachin の出力先をdachinの出力先と同じものに設定する」


■標準エラー出力のみ出力する

ややこしいですが、さっきのは標準出力を標準エラー出力として出力する場合です。

今回は標準出力は関係ありません。

※ちなみに
/dev/nullはunixのスペシャルファイルで空ファイル


■いろいろな例

・リダイレクトなし

標準出力 : 画面
標準エラー出力 : 画面

・標準出力のみファイルにリダイレクトする場合

標準出力 : file
標準エラー出力 : 画面

・標準出力と標準エラー出力2つともファイルにリダイレクトする場合

・流れ
標準出力 : file
標準エラー出力 : file

標準出力 : file
標準エラー出力 : 画面

↓ 2>&1が処理されるため2の出力先を1の出力先と同じに設定

標準出力 : file
標準エラー出力 : file


■まとめ

ここらへんを理解出来ていれば

スクリプト作るときに何も困らないはず!(・∀・)b

参考:http://qiita.com/yukotan/items/749de95af895e23a2114
http://www.creatology.jp/unix/outin.html


あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニア勉強会なども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中である。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください