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を使用してシンプルな弾幕スクリーンシステムを実装する

推薦する

Centos7 サーバーで jar パッケージ プロジェクトを開始する最良の方法

序文Linux 上で jar パッケージを実行する方法は誰もが知っています。なぜ別々に話したいのでし...

IDEA に基づいて Tomcat サーバーを展開するための詳細な手順

目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...

Docker イメージのインポートとエクスポートのコード例

Dockerイメージのインポートとエクスポートこの記事では、移行、バックアップ、アップグレードなどの...

CSSフローティングとフローティング解除について

フロートの定義要素を通常のドキュメント フローから外し、要素を左また​​は右に近づけます。親要素の端...

Vue ローカルコンポーネントデータ共有 Vue.observable() の使用

コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...

HTML における if 判断の使用

Django Web開発の過程で、HTMLを書く際にバックエンドから同じ名前のリスト変数が渡されるが...

優れたユーザー エクスペリエンス デザイナーが行うべき 5 つのこと (画像とテキスト)

この記事は、@C7210 によって翻訳されたブログ「Usability Counts」からの翻訳です...

Centos8で静的IPを設定する方法の詳細な説明

CentOS 8をインストールした後、ネットワークを再起動すると次のエラーが表示されますエラーメッセ...

Vue での mixin の応用について議論する

Mixin は、再利用可能な機能を Vue コンポーネント間で分散する非常に柔軟な方法を提供します。...

テキストエリアのテキストをHTMLに変換する方法、つまり復帰改行について

説明: テキストエリアの値の改行を新しい行に変更しますコードをコピーコードは次のとおりです。 <...

MySqlを最適化するためにnot inを使用する方法

最近、プロジェクトで選択クエリを使用する際に、未使用の主キー ID を除外するために not in ...

Redhat 7.3 に MySQL 8.0.22 をインストールするための詳細なチュートリアル (バイナリ インストール)

目次1. MySQLインストールパッケージをダウンロードする2. MySQLのアンインストール手順3...

MySQL での coalesce() の使用に関するヒントのまとめ

序文最近、偶然 MySQL の coalesce を発見しました。ちょうど時間があったので、MySQ...

Alibaba CloudがCloud Shieldから無料のSSL証明書(https)を申請

プロジェクトでは https サービスを使用する必要があるため、Alibaba Cloud では無料...

MySQL InnoDB MRR 最適化ガイド

序文MRR は Multi-Range Read の略で、ランダム ディスク アクセスを削減し、ラン...