サイトアイコン スグブログ

【Linux】リダイレクトの実用的な使い方!実例を用いて説明します

パソコン教室

Linuxサーバでリダイレクトについて説明します。

リダイレクトってなんだっけ?リダイレクトはどうやって使うんでしたっけ?「2>$1」など意味が分かりません。

そういった疑問に現役エンジニアの筆者が答えていきます。

筆者はWindowsサーバーやLinuxサーバーの運用構築を11年間以上おこなってきました。その経験を元に知識を公開していきます!

Linuxサーバーのリダイレクトについて、実例を用いてわかりやすく説明します!

Linuxサーバーでリダイレクトの使い方

Linuxサーバーでリダイレクトの使い方をまとめます。

Linuxのリダイレクト効果
>出力をファイルに上書きする。ファイルがなければ新規作成する
>>出力をファイルに追記する。末尾に追記していく
<ファイルの内容を出力する
<<入力終端の文字を指定する
2>エラー出力をファイルに上書きする
2>>エラー出力をファイルに追記する
2>$1エラー出力と標準出力をファイルに上書きする
Linuxのリダイレクトの書き方一覧

リダイレクトで出力をファイルに上書きする

リダイレクトで出力をファイルに上書きするには「>」を使用します。

ファイルに上書き書き込みする時に使用します。指定するファイルがない場合は新規作成します。

まずカレントディレクトリに「redirect」というファイルがないか、lsコマンドとgrepコマンドで確認します。

[root@localhost ~]# ls | grep redirect
[root@localhost ~]#

ファイルがない事が確認できました。文字を標準出力に表示して、その文字をリダイレクトしてファイルを新規作成プラス書き込みしてみます。

echo redirect-test > redirect

新規ファイルが作成されているか、先程のコマンドで確認してみます。

[root@localhost ~]# ls | grep redirect
redirect

リダイレクトにより、新規ファイルが作成されています。catコマンドで内容も確認してみます。

[root@localhost ~]# cat redirect
redirect-test

標準出力に表示した文字列が、新規作成されたファイルに書き込まれています。

上書きされるかもう一度リダイレクトしてみます。

echo redirect-test-2 > redirect

内容を確認してみます。

[root@localhost ~]# cat redirect
redirect-test-2

2回目のリダイレクトの内容のみ書き込まれています。追記ではなく上書きされている事がわかりました!

リダイレクトで出力をファイルに追記する

リダイレクト追記するには「>>」を使用します。

先程のファイルに追記してみます。

echo redirect-test-add >> redirect

追記されたかファイルの内容を確認します。

[root@localhost ~]# cat redirect
redirect-test-2
redirect-test-add

先程の内容に今回の標準出力に表示された文字列が追記されています。

リダイレクトでファイルの内容を出力する

逆にファイルの内容を標準出力に表示させるには「<」を使用します。

先程のファイルの内容を標準出力に表示させてみます。

[root@localhost ~]# cat < redirect
redirect-test-2
redirect-test-add

ファイルの内容が標準出力に表示されています。

同じ結果を表示するには下のコマンドでも可能です。

[root@localhost ~]# cat redirect
redirect-test-2
redirect-test-add

他にもありますが、「<」のリダイレクトはあまり使用しません。

[root@localhost ~]# grep redirect < redirect
redirect-test-2
redirect-test-add
[root@localhost ~]# cat redirect | grep redirect
redirect-test-2
redirect-test-add

リダイレクトでエラー出力をファイルに上書きする

リダイレクトエラー内容をファイルに上書きするには「2>」を使用します。

リダイレクトを勉強している人

リダイレクトで出てくる2という数字は何を意味するの?

リダイレクトを勉強している人

リダイレクトで使用される数字があるのでまとめておきます。

リダイレクトで出てくる数字意味デフォルト
0標準入力キーボード
1標準出力ディスプレイ
2エラー出力ディスプレイ
リダイレクトで出てくる数字の一覧
リダイレクトを勉強している人

つまりここで出てくる2という数字は、エラーの出力を意味します。

では「2>」のリダイレクトを使用して、エラー出力をファイルに上書きしてみます。

[root@localhost ~]# echo redirect-error 2> redirect
redirect-error

リダイレクトで「redirect-error」という文字が、標準出力に表示されています。

「redirect」ファイルの内容を確認してみます。

[root@localhost ~]# cat redirect
[root@localhost ~]#

エラーが出ていない為、ファイルが空白になっています。

「echo」コマンドを「ech」にして、エラーになるようにしてみます。

[root@localhost ~]# ech redirect-error 2> redirect
[root@localhost ~]#

エラーになった為、標準出力には何も表示されません。

エラー内容をファイルに追記するだけではなく、標準出力にも表示して確認したい場合はteeコマンドを使用します。詳しくは以下の記事を参照下さい。

「redirect」ファイルの内容を確認してみます。

[root@localhost ~]# cat redirect
-bash: ech: コマンドが見つかりません

標準出力に出るエラー内容が、ファイルに上書きされています。

リダイレクトの「2>」を「2>>」に変更すると、上書きから追記に変更します。

ech redirect-error 2>> redirect

上のコマンドでまたエラーを出力します。

[root@localhost ~]# cat redirect
-bash: ech: コマンドが見つかりません
-bash: ech: コマンドが見つかりません

ファイルの中身を確認すると、エラー内容が追記されています。

エラー出力と標準出力をファイルに上書きする

エラー出力と標準出力をファイルに上書きする時は、「>」でリダイレクトして、コマンドの最後に「2>&1」をつけます。

Linuxのカレントディレクトリのファイルを一覧表示するlsコマンドで、2つのファイルを表示させてみます。

[root@localhost ~]# ls redirect nofile > redirect 2>&1
[root@localhost ~]#

カレントディレクトリに「file1.txt」ファイルはありますが、「nofile」ファイルはありません。

標準出力には何も表示されません。

標準出力にも表示して確認したい場合はteeコマンドを使用します。teeコマンドの詳細は以下の記事参照

リダイレクトされたファイルの内容を確認します。

[root@localhost ~]# cat redirect
ls: nofile にアクセスできません: そのようなファイルやディレクトリはありません
redirect

1行目にエラー出力が表示されています。2行目に標準出力が表示されています。

リダイレクトの「>」を「>>」に変更すると、上書きから追記に変更します。

[root@localhost ~]# ls file1.txt nofile >> redirect 2>&1
[root@localhost ~]#

カレントディレクトリにある「file1.txt」とない「nofile」を指定します。

[root@localhost ~]# cat redirect
ls: nofile にアクセスできません: そのようなファイルやディレクトリはありません
redirect
ls: nofile にアクセスできません: そのようなファイルやディレクトリはありません
file1.txt

先程のファイルの内容の末尾に、今回のエラーと標準出力が追記されました。

まとめ:Linuxサーバーでリダイレクトの使い方

Linuxサーバーでリダイレクトの使い方をまとめます。

Linuxのリダイレクト効果
>出力をファイルに上書きする。ファイルがなければ新規作成する
>>出力をファイルに追記する。末尾に追記していく
<ファイルの内容を出力する
<<入力終端の文字を指定する
2>エラー出力をファイルに上書きする
2>>エラー出力をファイルに追記する
2>$1エラー出力と標準出力をファイルに上書きする
Linuxのリダイレクトの書き方一覧

リダイレクトに出てくる数字についてまとめます。

リダイレクトで出てくる数字意味デフォルト
0標準入力キーボード
1標準出力ディスプレイ
2エラー出力ディスプレイ
リダイレクトで出てくる数字の一覧
モバイルバージョンを終了