Linux リダイレクトの使用方法の詳細な説明

Linux リダイレクトの使用方法の詳細な説明

誰でも時々データをコピーして貼り付ける必要があると思います。コピーして貼り付けるためにファイルを開くと、必然的にマウスとキーボードの操作が増え、面倒になります。では、これらの面倒な操作を行わずにコピーと貼り付けを行う方法はあるのでしょうか?

答えは「はい」です。リダイレクトです。リダイレクトは、マウスやキーボードを頻繁に操作せずにデータ転送を完了できる効率的な方法です。リダイレクトは、入力リダイレクトと出力リダイレクトの 2 つのタイプに分けられます。すべてのプログラムには入力または出力があるため、入力と出力のリダイレクトは、あらゆるプログラミング言語またはスクリプト言語のネイティブ機能です。

コンピューターを操作するたびに、リダイレクトが必ず発生します。リダイレクトの使い方を学ぶと、コンピューターの操作性が向上するだけでなく、作業効率も向上します。そこで、Liang Xu が Linux システムでのリダイレクトの一般的な使用法を説明します。

Linux のデータフロー

Linux リダイレクトについて話すとき、次の 3 つのデータ ストリームについて言及する必要があります。

  • 入力は stdin (標準入力、通常はキーボードまたはマウス) から読み取られます。
  • 出力は stdout (標準出力、テキスト ファイル、またはデータ ストリーム) に送信されます。
  • エラーメッセージはstderrに出力されます。

これらのデータ フローの存在を把握しておくと、Shell を使用するときにデータ フローをより適切に制御できます。

Linux システムでは、標準入力、標準出力、標準エラーはすべてファイルとして存在します。これらは /dev ディレクトリで確認できます:

$ ls /dev/std* 
/dev/stderr /dev/stdin /dev/stdout

出力のリダイレクト

Linux システムでは、> 文字を使用して出力をリダイレクトします。たとえば、ls コマンドの出力をファイルにリダイレクトするには、次のようにします。

$ ls > リスト.txt

上記コマンドを実行すると、出力情報が list.txt ファイルにリダイレクトされるため、ls コマンドの出力情報は画面に表示されなくなります。

さらに、リダイレクトには多くの用途があります。ファイルの内容をコピーするためにも使用できます。テキスト ファイルのコピーに限定されず、バイナリ ファイルもコピーできます。

$ 猫画像.png > 画像.png

あるファイルの内容を別のファイルの末尾にコピーしたい場合は、次のように > 文字を >> 文字列に置き換えるだけです。

$ cat lxlinux >> alvi

入力のリダイレクト

出力のリダイレクトとは対照的に、入力のリダイレクトには < 文字が使用されます。

入力リダイレクトは、入力情報をパラメータとしてコマンドにリダイレクトできます。この機能はあまり使用されないかもしれませんが、コマンドにパラメータのリストが必要で、これらのパラメータがすべてファイル内にあり、ファイルからターミナルにすばやくコピーして貼り付けたい場合、この機能が役立ちます。

たとえば、package.list にはインストールする必要があるパッケージのリストが含まれており、すべてのパッケージをすばやくインストールしたい場合は、次のコマンドを実行するだけで、package.list 内のすべてのパッケージを一度にインストールできます。

$ sudo dnf install $(<package.list)

入力リダイレクトの一般的な用途は、Here-document (略して Here-doc) と Here-string です。

here-doc は、特別なファイル終了マーカーに遭遇するまで、入力テキストのブロックを標準入力ストリームにリダイレクトします (ファイル終了マーカーは任意の一意の文字列にすることができますが、ほとんどの人はデフォルトで EOF を使用します)。

ターミナルで次のコマンドを入力してみてください (2 番目の EOF 文字列が終了するまで)。

$ 猫 << EOF 
> アルヴィン 
> linux.net について 
> 終了

予想される出力は次のようになります。

アルヴィン
翻訳元

Here-doc は、複数行のテキストをファイルまたは画面にダンプするために Bash スクリプト作成者が使用する一般的なトリックです。

here-string は here-doc に似ていますが、1 つの文字列だけ、または引用符で囲まれた複数の文字列を取ります。

$ 猫 <<< アルビン 
アルヴィン 
$ cat <<< "alvin lxlinux.net" 
アルビン lxlinux.net

エラーメッセージのリダイレクト

エラー メッセージは、デフォルトでは stderr と呼ばれるストリームに送信され、2> を使用してリダイレクトできます。たとえば、エラー メッセージを output.log というファイルにリダイレクトするには、次のようにします。

$ ls /nope 2> 出力.log

データを/dev/nullにリダイレクトする

標準入力、標準出力、標準エラーと同様に、Linux ファイルシステムにもそれに対応するファイルがあり、これは null と呼ばれ、/dev ディレクトリに配置されます。読みやすくするために、スラッシュを省略して、dev null として直接読む人も多くいます。

/dev/null にはデータは保存されず、/dev/null に書き込まれたデータは、虚空に投げ込まれたかのように、最終的には失われます。したがって、リダイレクトを使用して、不要なデータを /dev/null にパイプすることができます。たとえば、find コマンドの出力は非常に詳細になることが多く、次のように、ファイルの検索時に権限の競合が報告されることがよくあります。

$ find ~ -type f 
/home/seth/actual.file 
find: `/home/seth/foggy': 権限が拒否されました 
検索: `/home/seth/groggy': 権限が拒否されました 
find: `/home/seth/soggy': 権限が拒否されました 
/home/seth/zzz.ファイル

このとき、次のようにエラー情報を /dev/null にリダイレクトして、不要な情報を除外することができます。

$ find ~ -type f 2> /dev/null 
/home/seth/actual.file 
/home/seth/zzz.ファイル

リダイレクトを有効活用する

リダイレクトは、Bash でデータを移動する効率的な方法です。リダイレクトを常に使用するとは限りませんが、必要なときにリダイレクトを使用する方法を知っておくと、不要なコピーと貼り付けの操作を大幅に省くことができ、マウスとキーボードの操作にかかる時間を大幅に節約できます。コピー&ペーストにこだわらないでください。リダイレクトを使用すると作業効率が向上します。素晴らしいと思いませんか?

Linux リダイレクトの詳細な使用方法については、これで終わりです。Linux リダイレクトの使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxの入力および出力リダイレクトを使用するための詳細な手順
  • Linux シェルのパイプコマンドの使用方法とシェルのリダイレクトとの違い
  • Linux シェルのデータ リダイレクト (入力リダイレクトと出力リダイレクト) の詳細な分析
  • Linux ベースシェルリダイレクトの詳細な説明
  • Linux の入力と出力のリダイレクトの詳細な説明
  • Linux URL の 301 リダイレクト コードの分析

<<:  MySQLのビューとインデックスの使い方と違いの詳細な説明

>>:  jsを使用してシンプルな弾幕スクリーンシステムを実装する

推薦する

ウェブデザインにおける2種類のタブアプリケーション

現在、Web デザインではタブが広く使用されていますが、一般的に次の 2 つのタイプに分けられます。...

JavaScript における URL オブジェクトの素晴らしい使い方

目次序文解析パラメータURLパラメータを変更する要約する序文URLオブジェクトはページ側ではあまり使...

Vue2 キューブUI 時間セレクターの詳細な説明

目次序文1. 需要と効果必要効果2. コードの実装index.vue(html)日付方法テスト結果3...

複数レベルの複雑な動的ヘッダーの avue-crud 実装例

目次序文バックグラウンドデータの結合フロントエンドデータ表示ページ効果表示Avue.js は、既存の...

Fabric.js は DIY ポストカード機能を実装します

この記事では、DIYポストカード機能を実現するためのfabricjsの具体的なコードを参考までに共有...

Apache での ab パフォーマンス テスト結果を分析する

私はパフォーマンス テストを行うために常に Loadrunner を使用してきました。 Loadru...

JavaScript 正規表現の説明

目次1. 正規表現の作成2. 使用モード2.1 シンプルモードの使用2.2 特殊文字の使用3. 応用...

Tomcat の maxPostSize 設定に関する問題と注意事項

1. maxPostSize を設定する理由は何ですか? tomcat コンテナには送信データのサイ...

Linuxの運用と保守、基本的なプロセス管理、リアルタイム監視と制御

目次1. バックグラウンドで実行されるジョブ2. 信号を使用してプロセスを制御する基本的なプロセス管...

CSS3アニメーション属性に基づくWeChatタップアニメーション効果の実装

最近人気のWeChatタップ機能を見て、CSS3アニメーションを見直し、このボックスシェイクアニメー...

VMware仮想マシンでのLinuxのコピー&ペーストの詳細な説明

1. VMware Workstation 上の Linux: 1. ソースの更新(オプション) v...

人気の宇宙飛行士ウォッチフェイスをJavaScriptで実装するための完全なコード

1. エフェクト表示JavaScript で書かれた宇宙飛行士のウォッチフェイス。 http://x...

Dockerの動作モードと原理の詳細な説明

次の図に示すように: 仮想マシンと Docker を使用するとき、「なぜ Docker は VM よ...

サブクエリ最適化における MySQL 選択の実装

以下のデモはMySQLバージョン5.7.27に基づいています。 1. MySQLサブクエリ最適化戦略...