LoginSignup
32
19

More than 5 years have passed since last update.

2>&1はどういう意味?

Posted at

コマンド実行の戻り値を変数に代入して、出力したいと思いました。
RESULT= `sudo git show hoge 2>&1`
echo $RESULT

このように書くと、RESULTの中にコマンドの戻り値を「RESULT」という
変数の中に代入し、出力するという意味です。

ただ、「2>&1」の意味が分からなかったので、調べてみました。
下記の意味だそうです。

コマンドの出力には標準出力と標準エラー出力があり、番号が振られています。

1: 標準出力
2: 標準エラー出力

それぞれを別々のファイルに保存するときには次のようになります。
Command 1>log.txt 2>errlog.txt

コマンドは普通に実行すると標準出力と標準エラー出力はまぜて出力されます。
それと同じように混ぜてファイルに出力するための方法がご質問の記述です。
Command >log.txt 2>&1

ということは、標準出力も標準エラー出力も区別せずに変数にリダイレクトしたい
という意味です。
そもそもその2つが分かれているということを知りませんでした。
上記のコードでは、「標準出力」を「標準エラー出力」にマージするという書き方です。

VAR= `command 2>&1 >/dev/null `
ただ、このようにすることで、標準出力を/dev/nullに捨てることもできるようです。

32
19
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
32
19