標準エラー
CoddyのTerminalジャーニー「基礎」セクションの一部 — レッスン 41/82。
3 番目かつ最後のデータストリームは 標準エラー で、stderr と略されます。このストリームは、エラーメッセージと警告専用で、それらを通常の出力から分離して保持します。
コマンドが失敗すると、エラーメッセージは標準出力ではなく標準エラーに送られます:
ls nonexistent_folder表示されるエラーメッセージは stderr を通じて出力されます。この分離は重要です。なぜなら、エラーを通常の出力から独立してリダイレクトできるからです。
標準エラーをリダイレクトするには、2> を > の代わりに使用します:
ls nonexistent_folder 2> errors.txt2 は stderr のファイルディスクリプタ番号を指します(stdout は 1、stderr は 2)。このコマンドはエラーメッセージを errors.txt にキャプチャし、ターミナルをクリーンに保ちます。
両方のストリームを異なるファイルにリダイレクトできます:
ls existing_folder nonexistent_folder > output.txt 2> errors.txt正常な出力は output.txt に送られ、すべてのエラーは errors.txt に送られます。両方のストリームを同じファイルに送るには、2>&1 を使用します:
ls existing_folder nonexistent_folder > all_output.txt 2>&1これにより、stderr を stdout の出力先にリダイレクトし、すべてを1つのファイルに結合します。
チャレンジ
簡単2> 演算子を使用して、エラーメッセージをファイルにリダイレクトします。以下の2つのコマンドを順番に実行します:
lsを使ってmissing_folderという名前のフォルダをリストしようとし、エラーメッセージをerrors.txtという名前のファイルにリダイレクトしますcatを使ってerrors.txtの内容を表示します
ヒント: 形式は
ls foldername 2> filenameです。エラーメッセージは画面に表示される代わりにファイルに入ります。catを使ってキャプチャされたことを確認してください。
チートシート
標準エラー ストリーム(stderr)は、エラーメッセージと警告に使用され、通常の出力から分離して保持します。
標準エラーをリダイレクトするには、2> を使用します:
ls nonexistent_folder 2> errors.txt2 は stderr のファイルディスクリプタ番号を指します(stdout は 1、stderr は 2)。
stdout と stderr の両方を異なるファイルにリダイレクトできます:
ls existing_folder nonexistent_folder > output.txt 2> errors.txt両方のストリームを同じファイルに送信するには、2>&1 を使用します:
ls existing_folder nonexistent_folder > all_output.txt 2>&1自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。