リダイレクトとは何ですか?
リダイレクトはLinuxの機能であり、コマンドを実行するときに、標準の入出力デバイスを変更できます。 Linuxコマンドの基本的なワークフローは、入力を受け取り、出力を提供することです。
リダイレクトの種類
1。上書き
- 「>」標準入力(stdin)デバイスはキーボードです。
- 「<」標準出力(stdout)デバイスは画面です。
2。追加
- 「>>」標準出力
- 「<<」標準入力
3。マージ
- 「p> &q」ストリームpからの出力をストリームqとマージします
- “ p <&q”ストリームpからの入力をストリームqとマージします
‘> ‘記号は出力(STDOUT)リダイレクトに使用されます。

例:
ls -al > listings
ここで、コマンドls -alの出力は、画面ではなくファイルの「リスト」にリダイレクトされます。

注 :「コマンド出力をファイルにリダイレクトするときは、正しいファイル名を使用してください。同じ名前の既存のファイルがある場合、リダイレクトされたコマンドはそのファイルの内容を削除し、上書きされる可能性があります。」
—ファイルを上書きしたくないが、既存のファイルにコンテンツを追加したい場合は、‘>>を使用する必要があります ‘演算子。

—標準出力をファイルだけでなくデバイスにもリダイレクトできます!
cat music.mp3 > /dev/audio
catコマンドは、ファイルmusic.mp3を読み取り、出力をオーディオデバイスである/ dev/audioに送信します。ただし、PCのサウンド構成が正しい場合、このコマンドはファイルmusic.mp3
を再生します。‘< ‘記号は入力(STDIN)リダイレクトに使用されます


これにより、ファイルが電子メールに添付され、受信者に送信されます。
「NewsToday」は電子メールの件名、「[email protected]」は電子メールアドレス、「NewsFlash」は添付ファイルです。
上記の例は単純です。ファイル記述子を利用するいくつかの高度なリダイレクト手法を見てみましょう。
ファイル記述子(FD)
Linux / Unixでは、すべてがファイルです。通常のファイル、ディレクトリ、さらにはデバイスもファイルです。すべてのファイルには、ファイル記述子(FD)と呼ばれる番号が関連付けられています。
画面にはファイル記述子もあります。プログラムが実行されると、出力が画面のファイル記述子に送信され、モニターにプログラム出力が表示されます。出力がプリンターのファイル記述子に送信された場合、プログラム出力は印刷されます。
ターミナルでプログラム/コマンドを実行するときはいつでも、3つのファイルが常に開いています。つまり、標準入力、標準出力、標準エラー。

これらのファイルは、プログラムが実行されるたびに常に存在します。ファイル記述子の前に説明したように、はこれらの各ファイルに関連付けられています。
ファイル | ファイル記述子 |
---|---|
標準入力STDIN | 0 |
標準出力STDOUT | 1 |
標準エラーSTDERR | 2 |
デフォルトでは、エラーストリームが画面に表示されます。エラーリダイレクトとは、画面以外のファイルにエラーをルーティングすることです。
エラーリダイレクトが必要な理由
エラーリダイレクトは、Unix/Linuxの非常に人気のある機能の1つです。
多くのUNIXユーザーは、多くのコマンドで大量のエラーが発生すると考えています。
- たとえば、ファイルを検索しているときに、通常、許可が拒否されたというエラーが発生します。これらのエラーは通常、特定のファイルを検索する人の助けにはなりません。
- シェルスクリプトを実行しているときに、エラーメッセージが通常のプログラム出力を乱雑にしたくない場合がよくあります。
解決策は、エラーメッセージをファイルにリダイレクトすることです。
例1
myprogram 2>errorsfile

上記では、myprogramという名前のプログラムを実行しています。
標準エラーのファイル記述子は2です。
「2>」を使用して、エラー出力を「errorfile」という名前のファイルにリダイレクトします
したがって、プログラム出力がエラーで乱雑になることはありません。
例2
これは、findステートメントを使用する別の例です–
find . -name 'my*' 2>error.log
「検索」を使用する 」コマンド、「。」を検索しています 」が「名前」のファイルの現在のディレクトリ 」で始まる「my 「



例3
では、もっと複雑な例を見てみましょう。
サーバー管理者は頻繁にディレクトリを一覧表示し、エラー出力と標準出力の両方をファイルに保存します。このファイルは後で処理できます。これがコマンドです。
ls Documents ABC> dirlist 2>&1
ここで
- これは、あるファイルからの出力を別のファイルの入力に書き込みます。 2>&1は、STDERRがSTDOUTのターゲット(ファイルdirlist)にリダイレクトすることを意味します
- エラー出力を標準出力にリダイレクトし、標準出力をファイルdirlistにリダイレクトします。したがって、両方の出力がファイルdirlistに書き込まれます



概要
- Linuxの各ファイルには、対応するファイル記述子が関連付けられています
- キーボードは標準の入力デバイスであり、画面は標準の出力デバイスです
- 「>」は出力リダイレクト演算子です。 「>>」は、既存のファイルに出力を追加します
- 「<」は入力リダイレクト演算子です
- 「>&」は、あるファイルの出力を別のファイルにリダイレクトします。
- 対応するファイル記述子2を使用してエラーをリダイレクトできます。