
> UNIXのリダイレクト「 > >> < 」
> 標準出力・標準入力の仕組みを初心者にもわかりやすく紹介します。
UNIX Cafe|リダイレクト編【 > >> < 】

ユニ先生、echo "Hello"
って入力すると、文字がそのまま表示されますよね。これをファイルに保存したいときって、どうすればいいんですか?

いい質問だね。そんなときに使うのが「リダイレクト」だよ。
コマンドの出力を「ファイルに流す」仕組みなんだ。
コマンド紹介
>|コマンドの出力を「ファイルに流す」

あっ!「>」って、ファイルに書き出すって意味なんですね!

そのとおり。>
は「上書き」なんだ。
もし同じ名前のファイルがあったら、内容は消えて新しく書き直されるよ。
echo "Hello" > hello.txt
>>|ファイルの最後に追記する

うわっ、気をつけないといけませんね💦
じゃあ、追加したいときはどうするんですか?

そんなときは >>
を使うんだ。
これならファイルの最後に追記できる。
echo "こんにちは" >> hello.txt
<|ファイルの内容をコマンドに渡す

おおっ、上書きと追記の違い、わかってきました!
でも「<」は何に使うんですか?

<
はその逆で、「ファイルの内容をコマンドに渡す」ときに使うんだ。
たとえば cat < hello.txt
は、cat hello.txt
と同じ意味なんだよ。
cat < hello.txt

なるほど〜、コマンドの“入口”と“出口”をつなぎ替える感じなんですね!

その感覚、バッチリだよ!
リダイレクトを使いこなせると、コマンドの世界がぐっと広がるんだ。
2>|エラーメッセージをファイルに書き出す

ls
でファイル名を間違ったらエラーが出ました!
ls nofile.txt ls: nofile.txt: No such file or directory

2>
を使うとエラーメッセージをファイルに保存できるよ。
ls nofile.txt 2> error.log
&>|成功メッセージもエラーも全てファイルに書き出す

ユニ先生、このあいだ教えてもらった「2>」ってすごく便利でした!
でも、標準出力とエラーの両方をまとめてファイルにしたいときって、どうすればいいんですか?

おお、もうそこに気づいたんだね!
そんなときに使うのが &>
だよ。
出力もエラーも、ぜんぶひとつのファイルに書き出すんだ。
ls hello.txt notfound.log &> result.log
ログを開けば全てのメッセージを確認できるから、あとでゆっくり内容を見たいときに便利ですよ。
コーヒーブレイク:ユニ先生のひとこと

リダイレクトは「データの流れをデザインする」ことなんだよ。使いこなせたら、もう立派なUNIXマスターだね!
まとめ
- >:コマンドの出力を「ファイルに流す」
- >>:ファイルの最後に追記する
- <:ファイルの内容をコマンドに渡す
- 2>:エラーメッセージをファイルに書き出す
- &>:全てのメッセージをファイルに書き出す

今日のリダイレクト、すごくおもしろかったです!
出力もエラーも“流れ”をコントロールできるなんて、ちょっと魔法みたいですね

うん、まさにその通りだね。
UNIXの世界では、「データの流れをどうつなぐか」がとても大切なんだ。
ファイルに書き出したり、追記したり、まとめたり。
リダイレクトを使いこなせれば、作業をもっと自由に、もっと静かに進められるんだよ。