このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

新Linuxコマンド演習25


新Linuxコマンド演習25 概要

 「新Linuxコマンド演習25」では、コマンドの出力をファイルに書き出す(リダイレクト)操作を練習します。
 Linuxのほとんどのコマンドは、実行結果(標準出力)とエラーメッセージ(標準エラー出力)をそれぞれ別の「出力ストリーム」に送信します。
 リダイレクトを使うことで、これらの出力をファイルに保存したり、別のコマンドに渡したりできます。

この演習では次の3つのテーマを扱います。

  1. 標準出力のリダイレクト( > と >> )
  2. 標準エラー出力のリダイレクト( 2> と 2>> )
  3. 上書きと追記の違い。

標準出力・標準エラー出力とは

Linuxのコマンド実行では、結果が「3つのデータストリーム」で扱われます。

種類番号説明デフォルト出力先
標準入力(stdin)0コマンドが受け取るデータ(主にキーボード入力)キーボード
標準出力(stdout)1コマンドの実行結果やメッセージ端末画面
標準エラー出力(stderr)2エラーメッセージ端末画面

 普段は画面に出ているだけの出力を、> や 2> を使ってファイルに保存できるのが「リダイレクト」です。

リダイレクトの基本構文

構文説明
コマンド > ファイル名標準出力を指定したファイルに書き込む(上書き)。
コマンド >> ファイル名標準出力を指定したファイルの末尾に追記する。
コマンド 2> ファイル名標準エラー出力を指定したファイルに書き込む(上書き)。
コマンド 2>> ファイル名標準エラー出力を指定したファイルに追記する。

演習問題+模範解答例

演習01:標準出力をファイルへリダイレクトする

問題
現在の日時を dateコマンドで確認し、その出力を todayファイルに保存してください。

模範解答例

[suzuki@AlmaLinux ~]$ date
2025年 10月 30日 木曜日 21:45:13 JST

[suzuki@AlmaLinux ~]$ date > today
[suzuki@AlmaLinux ~]$ cat today
2025年 10月 30日 木曜日 21:45:14 JST

解説

  • > を使うと、標準出力(コマンド結果)をファイルに上書き保存します。
  • cat today で、ファイルの中身を確認できます。
  • 2回目に同じコマンドを実行すると、以前の内容は消えて新しい結果で上書きされます。

演習02:追記リダイレクトする

問題
todayファイルに新しい日時を追記してください。

模範解答例

[suzuki@AlmaLinux ~]$ date >> today
[suzuki@AlmaLinux ~]$ cat today
2025年 10月 30日 木曜日 21:45:14 JST
2025年 10月 30日 木曜日 21:47:20 JST

解説

  • >> は追記リダイレクトを意味します。
  • 既存の内容を残したまま、新しい出力がファイルの末尾に追加されます。
  • ログファイルなどを扱うときに頻繁に使われる重要な操作です。

演習03:標準エラー出力をファイルにリダイレクトする

問題
 存在しないファイル yesterday をlsコマンドで表示し、エラーメッセージを stderror というファイルに出力してください。

模範解答例

[suzuki@AlmaLinux ~]$ ls -l today yesterday
ls: cannot access 'yesterday': No such file or directory
-rw-rw-r--. 1 suzuki suzuki 86 10月 30 21:47 today

このままだと、エラーは端末に表示されます。
ここで、エラー出力をファイルにリダイレクトしてみましょう。

[suzuki@AlmaLinux ~]$ ls -l today yesterday 2> stderror
-rw-rw-r--. 1 suzuki suzuki 86 10月 30 21:47 today
[suzuki@AlmaLinux ~]$ cat stderror
ls: cannot access 'yesterday': No such file or directory

解説

 エラーメッセージの出力を標準出力の端末画面ではなく、ファイルへリダイレクトするには、「2>」もしくは、「2>>」と指定します。

  • 2> は「標準エラー出力(ファイルディスクリプタ番号2)」をファイルに書き出します。
  • 2 > のように数字と記号の間にスペースを入れないことがポイントです。
  • 結果として、正常な出力(today)は画面に表示され、エラー(yesterday)はファイルに保存されます。

演習終了時の作業

問題
この演習で作成したファイルを削除してください。

模範解答例

[suzuki@AlmaLinux ~]$ rm today stderror
[suzuki@AlmaLinux ~]$ ls
Desktop    Downloads  Pictures  Templates
Documents  Music      Public    Videos

解説
rmコマンドでファイルを削除します。ls で確認すると、削除されたことがわかります。

まとめ

新Linuxコマンド演習25」では、リダイレクトの基本を学びました。

操作記号説明
上書き出力>標準出力をファイルに上書き
追記出力>>標準出力をファイルに追記
エラー出力2>標準エラー出力をファイルに上書き
エラー追記2>>標準エラー出力をファイルに追記

 リダイレクトを使いこなすことで、ログの保存・デバッグ・スクリプトの自動化が格段に便利になります。
 次回の演習では、これらをさらに発展させ、パイプ( | )との組み合わせについて学んでいきましょう。