linux 標準入出力 リダイレクト

標準入出力

標準入出力は以下の3つに分けられる。

  • 入力:コマンドを打つ際、キーボードを使って入力する。キーボードを使ってコンピュータにデータを渡すこと。

  • 出力:catなどのコマンド入力すると結果が画面に出てくる。このようにコマンドの結果やプログラムを外に出すこと。

  • 標準linuxコマンドをキーボードで打った時、結果はディスプレイに出力されます。実は入力元と出力先は指定すると変更することができる。指定しない場合、デフォルトで決まっているところに入出力される。このことを標準という。標準では入力はキーボード、出力はディスプレイ

linuxを使えば標準入出力先をファイルに変更することができる。linuxではコマンドの入出力先を抽象化することで、入出力先を柔軟に変更できる。

  • 標準エラー出力: プログラムのエラーメッセージを出力する。ディスプレイが通常は使われる。



> リダイレクト 入出力先を変更する

入力のリダイレクト

キーボードの代わりにファイルから入力する機能

$ cat < /etc/hosts


出力のリダイレクト

コマンドの実行結果を画面に表示するのではなくファイルに保存する機能。

ex) lsで長い結果が出力される場合、その結果をファイルにまとめる

$ ls > output.text
$ cat > output.text


出力とエラー出力をまとめる 出力をリダイレクトした後に2>&1と書く

2>&1: 標準エラー出力を標準出力と一緒にする。なのでoutput.textに標準エラー出力と標準出力の両方を出すことができる。

% ls / /hoge > output.text 2>&1
% cat output.text
ls: /hogeにアクセスできません
bin boot dev etc home lib


実際に入出力をしてみよう

% ls
home.html   index.html
// catの入力先をhome.htmlに変更
% cat < home.html
<p>こちら葛飾区亀有公園前派出所</p>%
// その出力先をfile.htmlというファイルにする
% cat < home.html > file.html
% ls
file.html   home.html   index.html
% cat file.html
<p>こちら葛飾区亀有公園前派出所</p>%                  


 % ls /hoge > file.html
ls: /hoge: No such file or directory

ls /hogeの結果、通常の出力は空のメッセージだったのでfile.htmlの内容を上書きしてしまう。エラー出力は画面に表示されていることから、通常の出力とエラー出力は別物。

// ファイルの中身は空
 % cat file.html
% ls /hoge 2> file.html
// エラー内容がファイルに保存される
 % cat file.html
ls: /hoge: No such file or directory