Linux/Unix での入力出力リダイレクトの例

リダイレクトとは何ですか?

リダイレクトは、コマンドの実行時に標準の入出力デバイスを変更できる Linux の機能です。 あらゆる基本的なワークフロー Linuxコマンド それは入力を受け取り、出力を与えるということです。

  • 標準入力 (stdin) デバイスはキーボードです。
  • 標準出力 (stdout) デバイスは画面です。

リダイレクションを使用すると、上記の標準入出力を変更できます。

詳しくはこちら こちらをご覧いただくか、 ビデオにアクセスできない場合

出力リダイレクト

私達の '>' 記号は、出力 (STDOUT) リダイレクトに使用されます。

出力リダイレクト

例:

ls -al > listings

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

出力リダイレクト

お願い処置: コマンド出力をファイルにリダイレクトするときは、正しいファイル名を使用してください。 同じ名前の既存のファイルがある場合、リダイレクトされたコマンドはそのファイルの内容を削除し、上書きされる可能性があります。」

ファイルを上書きしたくないが、既存のファイルにコンテンツを追加したい場合は、次を使用する必要があります '>>' 演算子。

出力リダイレクト

標準出力をファイルだけでなくデバイスにもリダイレクトできます!

$ cat music.mp3 > /dev/audio

cat コマンドはファイル music.mp3 を読み取り、出力をオーディオ デバイスである /dev/audio に送信します。 PC のサウンド構成が正しい場合、このコマンドはファイル music.mp3 を再生します。

入力リダイレクト

私達の '' シンボルは入力 (STDIN) リダイレクトに使用されます

入力リダイレクト

例: Linux のメール プログラムを使用すると、ターミナルから電子メールを送信できます。

標準のデバイス キーボードを使用して電子メールの内容を入力できます。ただし、電子メールにファイルを添付する場合は、次の形式で入力リダイレクト演算子を使用できます。

Mail -s "Subject" to-address < Filename

入力リダイレクト

これにより、ファイルが電子メールに添付され、受信者に送信されます。

上記の例は単純です。File を利用した高度なリダイレクト手法をいくつか見てみましょう。 Descriptors。

File Descriptまたは(FD)

Linux/Unixでは、すべてがファイルです。通常のファイル、ディレクトリ、デバイスもファイルです。すべてのファイルには、ファイルと呼ばれる番号が関連付けられています。 Descriptまたは(FD)。

画面にはファイルも表示されます Descriptまたはプログラムが実行されると、出力はファイルに送信されます Descriptまたは画面にプログラムの出力が表示され、モニターに表示されます。出力がFile Descriptまたはプリンターの場合は、プログラム出力が印刷されます。

エラーのリダイレクト

端末でプログラム/コマンドを実行するときは常に、標準入力、標準出力、標準エラーの3つのファイルが開かれます。.

エラーのリダイレクト

これらのファイルは、プログラムが実行されるたびに常に存在します。 ファイル記述子の前で説明したように、 はこれらの各ファイルに関連付けられます。

File File Descriptor
標準入力STDIN 0
標準出力STDOUT 1
標準誤差STDERR 2

デフォルトでは、エラー ストリームは画面に表示されます。エラー リダイレクトは、エラーを画面以外のファイルにルーティングします。

なぜエラーリダイレクトなのか?

エラーのリダイレクトは、非常に人気のある機能の XNUMX つです。 Unix / Linux.

頻繁に UNIX を使用するユーザーは、多くのコマンドを実行すると大量のエラーが発生すると考えるでしょう。

  • たとえば、ファイルを検索すると、通常、アクセス拒否エラーが発生します。これらのエラーは通常、特定のファイルを検索しているユーザーの役には立ちません。
  • シェル スクリプトの実行中に、エラー メッセージが通常のプログラム出力を混乱させたくない場合がよくあります。

解決策は、エラー メッセージをファイルにリダイレクトすることです。

$ myprogram 2>errorsfile

エラーリダイレクトを行う理由

上記では、myprogram という名前のプログラムを実行しています。

標準エラーのファイル記述子は 2 です。

「2>」を使用して、エラー出力を「errorfile」という名前のファイルにリダイレクトします

したがって、プログラム出力がエラーで乱雑になることはありません。

これは、find ステートメントを使用する別の例です。

find . -name 'my*' 2>error.log

「find」コマンドを使用して、「.」現在のディレクトリで「name」が「my」で始まるファイルを検索します。

エラーリダイレクトを行う理由

例3: もっと複雑な例を見てみましょう。

サーバー管理者は、ディレクトリを一覧表示し、エラーと標準出力の両方をファイルに保存して、後で処理できるようにすることがよくあります。コマンドは次のとおりです。

ls Documents ABC> dirlist 2>&1

ここでは、

  • あるファイルからの出力を別のファイルの入力に書き込みます。 2>&1 は、STDERR が STDOUT のターゲット (ファイルのディレクトリリスト) にリダイレクトすることを意味します。
  • エラー出力を標準出力にリダイレクトし、標準出力をファイル dirlist にリダイレクトします。 したがって、両方の出力がファイル dirlist に書き込まれます。

エラーリダイレクトを行う理由

製品概要

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