1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux リダイレクトコマンド 2>&1について端的に解説

Posted at

LinuxやMacのターミナル、WindowsのPowerShellなど、コマンドラインで作業をしていると、
たまに見かける「リダイレクト」「2>&1」という記号。

他の記事を読み漁りましたがいいのがなかったので
自分用に書いていますがよければご覧ください。


前提知識:「標準〇〇」について

コマンドを実行するとき、実は裏側では「入力」と「出力」が3種類に分かれています。(正確にはもっとあるかもしれません)

1. 標準入力(stdin)

  • プログラムが受け取る情報
  • 普通はキーボード入力
    (例:cat にファイル名を渡す)

2. 標準出力(stdout)

  • プログラムの実行結果(成功)
  • 普通は画面に表示される(ディスプレイという意味)

3. 標準エラー出力(stderr)

  • エラーのメッセージ出力
  • 普通は画面に表示される(ディスプレイという意味)
    エラーなので標準出力とは分けて扱う

具体例で見る

cat hoge.txt

このコマンドで hoge.txt の内容を表示したいとします。
ファイルの中に hogehoge と書かれていれば、画面にこう表示されます:

hogehoge

これが **標準出力(stdout)**です。
そしてユーザが入力したcat hoge.txtが標準入力です。

では、hoge.txt にアクセス権がなければどうなるか?

cat: hoge.txt: 許可がありません

このエラー文は 標準エラー出力(stderr) として扱われます。

そしてそれらの入出力には番号が割り振られています。:

出力内容 出力の種類
キーボードからの入力 標準入力(0番)
ファイルの中身 標準出力(1番)
エラーメッセージ 標準エラー出力(2番)

こられを踏まえてまずリダイレクトの理解をする

リダイレクトとは「出力先の変更」です

通常、出力は画面に流れますが、それをファイルなど別の場所に送るのがリダイレクトです。

✔ 基本形

コマンド例 意味
command > file.txt 標準出力を file.txt に送る
command 2> error.txt 標準エラー出力を error.txt に送る

このように2>とすることで標準エラー出力としてリダイレクトさせることができます。
(> は1>が隠れているということです。)


では 2>&1 って何?

ここからが本題。

some_command > all.log 2>&1

これがやっているのは、

「標準出力を all.log に出す」+「標準エラー出力も、同じく all.log に出す」

同時に標準出力と標準エラー出力のリダイレクト先を設定しているということです。。

🔍 内訳を解説

表現 意味
> 出力をリダイレクト(ファイルに出す)
2> 標準エラー出力をリダイレクト
&1 「ファイル記述子1(標準出力)の行き先と同じにする」

順番に注意!

some_command 2>&1 > all.log

これはエラーは画面に出て、出力だけファイルに行く
→ 順番を間違えると意図した結果にならない。

常にこう書くべし:

some_command > all.log 2>&1

よく使う形まとめ

コマンド 意味
command > out.txt 標準出力をファイルに書き出す
command 2> error.txt エラーだけ別ファイルに書き出す
command > all.log 2>&1 出力もエラーもまとめて1つのファイルに保存

まとめ

1> = 標準出力の行き先を変える  
2> = 標準エラー出力の行き先を変える  
2>&1 = エラー出力の行き先を、標準出力と同じにする
リダイレクトとは「出力先の変更」。 `2>&1` は「エラー出力も同じ場所に出してね」というだけ。 実はシンプルな仕組みです。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?