Linux の基本について説明します。すべての分野で最も重要なことは、基本をまっすぐに保つことだからです。 Linux のパイプとリダイレクトについて話しましょう .
Linux のパイプとリダイレクトとは?
リダイレクト
Linux のすべてのプロセスには、少なくとも 3 つの通信チャネルがあります。
- 標準入力 - STDIN
- 標準出力 - STDOUT
- 標準エラー - STDERR
カーネル自体が、プロセスに代わってこれらのチャネルを設定します。プロセス自体は、それらがどこにつながるかを必ずしも知っているわけではありません。ほとんどの Linux コマンドは、STDIN からの入力を受け入れます 出力を STDOUT に書き込みます .エラー メッセージは STDERR に書き込まれます .これにより、コマンドを接続してパイプラインを作成できます。
シェルは記号 < を使用します 、> そして>> ファイルへの、またはファイルからのコマンド入力または出力の命令を再ルーティングする命令として。 < シンボルはコマンドの STDIN を接続しています 既存のファイルの内容に。 > そして>> シンボル リダイレクト STDOUT . > ファイルの既存のコンテンツと >> を置き換えます 記号が追加されます。
いくつかの例を見てみましょう。
次のコマンドは、「 」の間に入力したテキストをファイルに保存します。ファイルが存在しない場合は作成されます。
echo "Test Message" > testmessage
次のコマンドは、そのファイルの内容を含むメールを送信するため、ファイル自体ではなくテキストのみがユーザー Peter に送信されます。
mail -s "testmsg" peter < testmessage
find コマンドの例
find コマンドを使用すると、STDOUT と STDERR を別々に処理する必要がある理由がよくわかります。次のコマンドを実行すると:
find / -name core
通常、多くの Permission Denied エラー メッセージが表示されます。これらのエラー メッセージをすべて破棄するには、代わりに次のコマンドを実行します:
find / -name core 2> /dev/null
これにより、よりクリーンな結果が得られます。
パイプh3>
特定のコマンド、またはより具体的には、あるコマンドの STDOUT と別のコマンドの STDIN を接続する場合は、パイプ記号 | を使用できます。 それをするために。例を見てみましょう:
ls | head -4
これが何をするかというと、パイプ | を介して ls コマンドを head コマンドに接続します。 .つまり、ls を実行しています コマンド head -4 そのフォルダーの最初の 4 つのファイルのみを一覧表示します。このコマンドの最後に別のコマンドをパイプすることもできます。
最初のコマンドが成功したときにのみ 2 番目のコマンドを実行する場合は、&& を使用できます。 そのためのシンボル。例:
lpr /tmp/test && rm /tmp/test
最初に正常に印刷キューに入れられた場合にのみ、テスト ファイルを削除します。
一方、|| コマンドは、最初のコマンドが失敗した場合にのみ 2 番目のコマンドを実行します。
結論
Linux を定期的に使用する場合、Linux でのパイプとリダイレクトの機能を理解することは非常に重要です。コマンドラインで作業する必要がある場合は、それらを頻繁に使用します。将来的には、これらの短い Linux Basics ビットをさらに作成する予定です。情報を簡単に理解できるように、これらの記事が長くなりすぎないようにします。また、他の Linux &オープン ソース チュートリアルもチェックしてください!