リダイレクト
この記事を読んでほしいひと
LPIC level1習得を目ざす、初学者のかたへ。
コマンドの基本的な使い方について、解説をします。
今回の内容
今回は、リダイレクトについて解説します。
標準入力や標準出力、標準エラー出力の入力元、出力先を変更する場合にリダイレクトを用います。標準入力・標準出力・標準エラー出力について不安な方は、標準入力・標準出力・標準エラー出力とストリームの記事で解説しているので、必ず確認してから読みすすめてください。
リダイレクト
リダイレクトには、おもに標準入力を変更する場合、標準出力を変更する場合、標準エラー出力を変更する場合の3つのパターンがあげられます。それぞれ変更する場合にはリダイレクト記号として「>」「<」が用いられます。まとめたものが以下の表になります。
書式 | 意味 |
---|---|
コマンド > ファイル | コマンドの標準出力をファイルに書き込む(標準出力の変更)。 |
コマンド < ファイル | ファイルの内容をコマンドの標準入力へ送る(標準入力の変更)。 |
コマンド 2> ファイル | ファイルに標準エラー出力を書き込む(標準エラー出力の変更)。 |
リダイレクトの実行例
たとえばhogeと書かれているsak1.txtというファイルに対してcatコマンドを実行すると、ディスプレイ上にhogeと出力されました。これをディスプレイ上ではなく、ファイルsak2.txtに出力してみたいと思います。
[root@localhost Documents]# cat sak1.txt hoge #標準出力先としてデフォルトのディスプレイ上に表示される [root@localhost Documents]# cat sak1.txt > sak2.txt #リダイレクト記号「>」により、sak1.txtの内容をsak2.txtに出力する。 [root@localhost Documents]# [root@localhost Documents]# cat sak2.txt hoge #標準出力としてsak2.txtに出力されたことがわかる
ポイントは、cat sak1.txt > sak2.txtというコマンドを入力した直後、ディスプレイ上にはなにも出力されていないことです。これは標準出力先をディスプレイからsak2.txtに変更したためです。
今度はhogeと書かれているsak1.txtというファイルを標準入力に送りたいと思います。このとき標準出力はデフォルトのディスプレイが選択されるので、sak1.txtというファイルに書かれてあるhogeがディスプレイ上に表示されることになります。
[root@localhost Documents]# cat sak1.txt hoge #標準出力先としてデフォルトのディスプレイ上に表示される [root@localhost Documents]# cat > sak1.txt #リダイレクト記号「>」により、sak1.txtの内容を標準入力へ送る hoge
cat sak1.txtとコマンドを入力すると、ディスプレイ上にhogeと出力されました。同じようにcat < sak1.txtとコマンドを入力すると、ディスプレイ上にhogeと出力されました。どちらも得られる表示は同じですが、cat < sak1.txtというコマンドでは、「標準入力を標準出力に表示する」というコマンドの働きが行われていること注意してください。
最後にディレクトリ下に存在しないsak3.txtファイルをcatコマンドで読み込もうとしたときに出力されるエラー表示を、sak4.txtというファイルに出力してみましょう。
[root@localhost Documents]# cat sak3.txt #存在しないsak3.txtを読み込もうとしてエラー表示されることを確認する cat: sak3.txt: No such file or directory [root@localhost Documents]# cat sak3.txt 2> sak4.txt #リダイレクト記号「2>」により、標準エラー出力をsak4.txtに出力する。 [root@localhost Documents]# [root@localhost Documents]# cat sak4.txt cat: sak3.txt: No such file or directory
ポイントは、cat sak3.txt 2> sak4.txtというコマンドを入力した直後、ディスプレイ上にはなにも出力されていないことです。これは標準エラー出力先をディスプレイからsak4.txtに変更したためです。
標準出力、標準入力、標準エラー出力にはそれぞれ「>」「<」「2>」を用いる。
まとめ
今回は、リダイレクトついて解説しました。リダイレクトには他にも書式がありますので、興味のある方はマニュアル等を調べてコマンドの入力を行ってみてください。
最後に確認問題で、今回の記事の知識を復習してみましょう。
確認問題
現在ディレクトリ下にはsak3.txtというファイルは存在しません。このときcat sak3.txt > sak5.txtというコマンドを実行したさい、①ディスプレイ上にはなにが表示されるでしょうか、②sak5.txtにはなにが出力されるでしょうか。