Linuxのコマンドってやつは、まるで魔法の呪文。さて、これは何でしょう。
2>&1
答えは次のページ…

  • 答え
標準エラー出力【2】を標準出力【1】に出力する(=設定を同じにする)。
  • なんでこんなものが必要なのか。
例えば"test.sh"というこんなスクリプトを作ります。
#!/bin/sh

echo "bububu"
ls /gagaga       #存在しないファイル名
単に実行するとこんな感じに出力されますが、、
$ ./test.sh

bububu
ls: cannot access /gagaga: No such file or directory
ファイルにリダイレクトすると”bububu”はファイル出力されるものの”... No such file or directory”はファイルには出力されず標準エラー出力【2】に出ちゃいます。

スクリプトの結果をすべてファイルに出力したい場合に不便です。
そこで、2>&1の出番ですね。
$ ./test.sh > log.txt 2>&1

こうすると、
”bububu”も”... No such file or directory”も両方ファイルに出力されます(取りこぼしなし)。
  • 応用編
エラーメッセージがちょろちょろ出て鬱陶しいプログラムがある場合、
リダイレクト先を/dev/null(ビットバケツ)にすると何も出力されなくなって快適です。
(エラーを知りたい場合はやっちゃだめ)
$ ./test.sh > /dev/null  2>&1

IMG_20190127_170933

スポンサードリンク