質問: 「ls -lR」の標準出力,エラー出力はそれぞれどこに出力されるか,端末(画面)またはファイル名で答えろ ls -lR | tee fuga.txt 標準出力: エラー出力: という問題です http://qiita.com/wnoguchi/items/2fc3ec11043d139dc6bb これのteeコマンドについてみると 標準出力は端末(画面)とfuga.txtファイルの両方に出力されるというのがわかるんですけど エラー出力はどこに出力されるんですか?
回答: > > ls -lR | tee fuga.txt > > 標準出力: > > エラー出力: > > > lsでの結果出力とエラーは、標準出力(stdout)とエラー出力(stderr)に分かれて出力されます。 パイプには標準出力が流れて、teeに渡りfuga.txtに書き込まれます。但し、画面上には標準出力とエラー出力の一緒に出力されてますがパイプの前にエラー出力されたものです。teeのものではありません。その証拠にfuga.txtには標準出力が書かれています。 パイプにエラー出力も渡すので有れば、 ls -lR 2>&1 | tee fuga.txt とすればfuga.txtにエラーも書き込まれます。 Linuxのファイルディスクリプタは、 通常、0:標準入力(stdin)、1:標準出力(stdout)、2:標準エラー出力(stderr)になります。