USER
python hoge.py > /var/log/foo.log 2>&1 の2>&1 部分について詳しくおしえてください。 他の用途として使われるサンプルもいくつかおしえてください。
ASSISTANT
2>&1
の部分は、ファイルディスクリプタのリダイレクションに関連しています。UNIX および UNIX ライクなシステムでは、ファイルディスクリプタが入出力ストリームを参照する整数値です。一般的に、次の3つのファイルディスクリプタが定義されています。
- 0 – 標準入力(stdin)
- 1 – 標準出力(stdout)
- 2 – 標準エラー出力(stderr)
2>&1
の意味は、「ファイルディスクリプタ 2(標準エラー出力)の内容をファイルディスクリプタ 1(標準出力)にリダイレクトする」ということです。これにより、標準エラー出力の内容が標準出力に統合されます。
他の用途のサンプルをいくつか見てみましょう。
-
標準出力と標準エラー出力を別々のファイルにリダイレクトする場合:
command > output.log 2> error.log
これにより、
output.log
に標準出力が、error.log
に標準エラー出力が保存されます。 -
標準エラー出力を無視する場合:
command 2> /dev/null
これにより、標準エラー出力は
/dev/null
にリダイレクトされ、基本的に無視されます。 -
標準出力を標準エラー出力にリダイレクトする場合:
command 1>&2
これにより、標準出力の内容が標準エラー出力にリダイレクトされます。
これらの例は、ファイルディスクリプタのリダイレクションを使用して、コマンドの出力を制御する方法を示しています。
コメント