1.リダイレクトとは
標準入出力から、入出力先を切り替えることをリダイレクトと呼ぶ。
・入力リダイレクト→キーボード入力等の標準入力から、ファイル等に入力を切り替えること。
・出力リダイレクト→モニター等への標準出力から、ファイル等に出力を切り替えること。
・エラー出力リダイレクト→モニター等への標準エラー出力から、ファイル等に出力を切り替えること。
2.リダイレクトの方法
(1)入力リダイレクト
コマンド 0< [入力ファイルパス等]
※0は標準入力のファイルディスクリプタ番号。0の記載は省略できる。
(2)出力リダイレクト
コマンド 1> [出力ファイルパス等]
※1は標準出力のファイルディスクリプタ番号。1は省略できる。
(3)エラー出力リダイレクト
コマンド 2> [出力ファイルパス等]
※2は標準エラー出力のファイルディスクリプタ番号。標準出力と見分けがつかないため、2は省略できない。
(4)リダイレクトの記号
①<
入力元の切り替え。
②>
出力先の切り替え。※上書き
③>>
出力先の切り替え。※追記
④2>
エラー出力先の切り替え。
⑤&>
標準出力とエラー出力の出力先を一つのファイルにまとめる。※bash限定
⑥2>&1
標準出力をリダイレクト後、標準エラー出力の出力先を標準出力にリダイレクトすること。「&>」と結果は変わらないが、こちらは全てのシェルで使える。
例)コマンド > file.txt 2>&1
→コマンドの出力先をfile.txtにリダイレクトしてから、標準エラー出力の出力先も同じ場所にしている。
(5)リダイレクトによる出力破棄
リダイレクトで出力先を「/dev/null」ファイルに切り替えると出力が破棄されて、画面に何も表示されなくなる。実行結果をログを残したくないとき等に使う。※実行コマンド自体は基本的にログに出る。
例)cat file.txt > /dev/null 2>&1
→何も表示されない