ファイルディスクリプタのリダイレクションについて

USER

python hoge.py > /var/log/foo.log 2>&1 の2>&1 部分について詳しくおしえてください。 他の用途として使われるサンプルもいくつかおしえてください。

ASSISTANT

2>&1 の部分は、ファイルディスクリプタのリダイレクションに関連しています。UNIX および UNIX ライクなシステムでは、ファイルディスクリプタが入出力ストリームを参照する整数値です。一般的に、次の3つのファイルディスクリプタが定義されています。

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

2>&1 の意味は、「ファイルディスクリプタ 2(標準エラー出力)の内容をファイルディスクリプタ 1(標準出力)にリダイレクトする」ということです。これにより、標準エラー出力の内容が標準出力に統合されます。

他の用途のサンプルをいくつか見てみましょう。

  1. 標準出力と標準エラー出力を別々のファイルにリダイレクトする場合:

    command > output.log 2> error.log
    

    これにより、output.log に標準出力が、error.log に標準エラー出力が保存されます。

  2. 標準エラー出力を無視する場合:

    command 2> /dev/null
    

    これにより、標準エラー出力は /dev/null にリダイレクトされ、基本的に無視されます。

  3. 標準出力を標準エラー出力にリダイレクトする場合:

    command 1>&2
    

    これにより、標準出力の内容が標準エラー出力にリダイレクトされます。

これらの例は、ファイルディスクリプタのリダイレクションを使用して、コマンドの出力を制御する方法を示しています。

コメント

タイトルとURLをコピーしました