読者です 読者をやめる 読者になる 読者になる

8t's BBR

よくつまったあれこれをメモ

リダイレクションで標準エラー出力をファイルに出力する方法とその応用

shell & command

まず、リダイレクションとは
「標準入力の入力先、または、標準出力の出力先を変更する機能」のことである。
これを使用することで、入力先や出力先をファイルに指定できたりする。


使い方はいたって簡単で、><の後に入出力先を指定するだけである。

出力の切り替えの例

例えば、普通にファイルを指定してcatコマンドを使用した場合は、

 $ cat file.txt
 (file.txtの中身)

となり、普通にファイルの中身を表示するだけだが、

 $ cat file.txt > newfile.txt

とすると、画面上では何も出力はされないが、file.txtの中身がnewfile.txtにコピーされる。

また>の部分を>>とすれば、newfile.txtの元の内容を消さずにfile.txtの内容を追記させることも可能。
つまり、あるファイルの最後に何か追記したいときは、わざわざエディタを開かなくても

cat (追記したい内容) >> (追記するファイル)

とするだけで事足りる。

標準エラー出力を切り替える

>の部分を2>に変える。
これを使えば、例えば以下のjavaプログラムがあったとき(コンパイル済みと仮定)に

public class Sample {
  public static void main(String[] args){
    
    System.out.println("標準出力");
    System.err.println("標準エラー出力");

  }
}

以下のコマンドを実行すれば、

 $ java Sample > log 2> errlog

標準出力と標準エラー出力を別々のファイルに保存したりできる。
(上の例では、logに「標準入力」、errlogに「標準エラー出力」がそれぞれ保存されている。)