/dev/null 2>&1とは

nathan-anderson-KHSPGJ3zP0M-unsplash.jpg

質問

/dev/null 2>&1とは何ですか?


解答

/dev/null 2>&1 は、
標準エラー出力を標準出力と同じ行き先に送る
という意味のシェル記法です。

一見呪文のようですが、要素に分解すると非常に論理的です。


1. まず登場人物

/dev/null

  • 何を書いても捨てられる特殊デバイス

  • 「ブラックホール」「ゴミ箱」


標準入出力の番号

番号名前内容
0stdin標準入力
1stdout標準出力
2stderr標準エラー出力

2. 2>&1 の意味

分解すると

2 > &1
  • 2>:標準エラー出力をリダイレクト

  • &1:標準出力(ファイルディスクリプタ1)

👉 「stderrをstdoutと同じ場所へ」


3. /dev/null 2>&1 の全体像

典型例

command > /dev/null 2>&1

処理の順序:

  1. > /dev/null

    • 標準出力(1)を /dev/null に捨てる

  2. 2>&1

    • 標準エラー(2)を「今のstdout」と同じ場所へ

結果:

  • 標準出力 → /dev/null

  • 標準エラー → /dev/null

👉 すべての出力を捨てる


4. 順番が重要な理由

次の2つは意味が違います

正しい例(両方捨てる)

command > /dev/null 2>&1

間違えやすい例

command 2>&1 > /dev/null

処理順:

  1. 2>&1
    → stderrを**元のstdout(画面)**へ

  2. > /dev/null
    → stdoutだけ捨てる

結果:

  • stdout → /dev/null

  • stderr → 画面に表示される


5. よく使われる用途

ログを一切出したくない

cron_command > /dev/null 2>&1

エラーも含めてログファイルへ

command > all.log 2>&1

エラーだけ捨てる

command 2> /dev/null

6. なぜこんな書き方なのか(思想)

Unix哲学では:

  • 出力はすべて「ファイル」

  • エラーも「別のストリーム」

だから、

  • 必要なら混ぜる

  • 捨てたいなら捨てる

  • 別々にも扱える

という柔軟性が生まれています。


7. 一言でまとめると

/dev/null 2>&1
「標準出力と標準エラー出力を同じ場所にまとめる呪文」

その場所が /dev/null なら、
完全に無言でコマンドを実行します。



Linuxで快適PCライフ [ 日向俊二 ]

価格:3080円
(2026/1/21 20:56時点)
感想(0件)


Kubernetesで実践するクラウドネイティブDevOps [ John Arundel ]

価格:3850円
(2025/11/11 22:09時点)
感想(0件)


 



この記事へのコメント