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

【Linux】リダイレクト

リダイレクトとは

 リダイレクトは、標準入出力をキーボードやモニタではなく、ファイルに切り替える機能です。これにより、プログラムの入力や出力をファイルから読み込んだり、ファイルに書き出したりすることができます。

入力リダイレクト

 入力リダイレクトは、標準入力をキーボードからファイルに切り替える機能です。これを利用することで、頻繁に使用するデータをファイルに保存し、そのファイルをコマンドに一気に読み込ませることができます。例えば、「cat < input.txt」は、「input.txt」ファイルの内容を「cat」コマンドに渡します。

出力リダイレクトとエラー出力リダイレクト

  • 出力リダイレクトは、標準出力をモニタからファイルに切り替える機能です。これにより、コマンドの出力をファイルに保存できます。
  • エラー出力リダイレクトは、標準エラー出力をモニタからファイルに切り替える機能です。これにより、エラーメッセージをファイルに保存できます。

基本的なリダイレクト記号の一覧

リダイレクトの種類記号意味使い方例
入力リダイレクト<ファイルの内容を標準入力として使用するcommand < input.txt
出力リダイレクト(上書き)>標準出力をファイルに書き込む(既存の内容は上書きされる)command > output.txt
出力リダイレクト(追記)>>標準出力をファイルに追記する(既存の内容を保持したまま追加する)command >> output.txt
エラー出力リダイレクト2>標準エラー出力をファイルに書き込む(既存の内容は上書きされる)command 2> error.txt
エラー出力リダイレクト(追記)2>>標準エラー出力をファイルに追記する(既存の内容を保持したまま追加する)command 2>> error.txt
標準出力とエラー出力を同時にリダイレクト(上書き)>&標準出力と標準エラー出力の両方を同じファイルに書き込む(既存の内容は上書きされる)command > output.txt 2>&1
標準出力とエラー出力を同時にリダイレクト(追記)>>&標準出力と標準エラー出力の両方を同じファイルに追記する(既存の内容を保持したまま追加する)command >> output.txt 2>>&1
基本的なリダイレクト記号の一覧

リダイレクトの使用例

1.入力リダイレクト

サンプルファイルの作成:input.txt

 まず、以下の内容を持つサンプルファイル「input.txt」を作成します。このファイルには複数行のテキストデータが含まれています。これを入力リダイレクトで使用することで、コマンドに一括してデータを渡すことができます。

・「nano input.txt」コマンドを実行します。

nanoエディタを起動して、「input.txt」ファイルを作成します。

user01@ubuntu-vm:~$ nano input.txt

以下の内容を入力します。

Hello, this is the first line.
This is the second line.
And here is the third line.

入力したら、「Ctrl + S」キーを入力して保存、「Ctrl + X」キーでnanoエディタを終了させます。

・「cat < input.txt」コマンドを実行します。

 このコマンドを実行すると、「input.txt」の内容が標準入力として「cat」コマンドに渡され、その結果が標準出力(ターミナル)に表示されます。具体的には、次のような出力が得られます。

user01@ubuntu-vm:~$ cat < input.txt
Hello, this is the first line.
This is the second line.
And here is the third line.

 このように、入力リダイレクトを使用することで、ファイル内のデータをコマンドに直接渡すことができます。これは、特定のデータセットを何度もコマンドに入力する必要がある場合に非常に便利です。

2.出力リダイレクト

・「ls > output.txt」コマンドを実行し、「cat output.txt」コマンドで作成されたファイルの内容を確認します。

このコマンドは、「ls」コマンドの出力を「output.txt」ファイルに書き込みます。

user01@ubuntu-vm:~$ cat output.txt 
input.txt
output.txt
snap
ダウンロード
テンプレート
デスクトップ
ドキュメント
ビデオ
ピクチャ
ミュージック
公開

3.エラー出力リダイレクト

・「ls non_existent_file 2> error.txt」コマンドを実行し、「cat error.txt」コマンドで作成されたファイルの内容を確認します。

存在しないファイルに対するエラーメッセージを「error.txt」ファイルに書き込みます。

user01@ubuntu-vm:~$ ls non_existent_file 2> error.txt
user01@ubuntu-vm:~$ cat error.txt 
ls: 'non_existent_file' にアクセスできません: そのようなファイルやディレクトリはありません

4.標準出力とエラー出力の同時リダイレクト

・「ls non_existent_file input.txt > ls.err 2>&1」コマンドを実行し、「cat ls.err」コマンドで作成されたファイルの内容を確認します。

ls」コマンドの標準出力と標準エラー出力の両方を「ls.err」に書き込みます。

user01@ubuntu-vm:~$ ls non_existent_file input.txt > ls.err 2>&1
user01@ubuntu-vm:~$ cat ls.err 
ls: 'non_existent_file' にアクセスできません: そのようなファイルやディレクトリはありません
input.txt

作成したファイルと作成されたファイルの削除

作成したファイルとリダイレクトによって作成されたファイルを削除します。

・「rm input.txt output.txt error.txt ls.err」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

user01@ubuntu-vm:~$ rm input.txt output.txt error.txt ls.err
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 これらのリダイレクトを使用することで、Linux上でのコマンド操作がより柔軟かつ効率的に行えるようになります。