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

推薦する

JavaScript の navigator.userAgent がブラウザ情報を取得するケースの説明

ブラウザはおそらく私たちにとって最も馴染みのあるツールです。 Firefox、Opera、Safar...

HTMLの基本タグと構造の詳細な説明

1. HTMLの概要1.HTML: ハイパーテキスト マークアップ言語。これはプログラミング言語では...

ftp は SSH 経由で Linux にリモート接続します

まず Linux に ssh をインストールします。例として Centos を使用します。ポータル:...

インライン要素とブロック要素とは何ですか?

1. インライン要素はコンテンツの幅のみを占めますが、ブロック要素はコンテンツの量に関係なく行全体を...

Flexレイアウトとスケーリング計算についての簡単な説明

1. Flexレイアウトの紹介Flex は Flexible Box の略で、「柔軟なレイアウト」を...

MySqlデータベースの基礎知識のまとめ

目次基本的なデータベース操作2) データベースを表示する3) データベースを選択する4) データベー...

Mac OS10.12 に mysql5.7.18 をインストールするチュートリアル

ウェブ全体を検索して、さまざまな落とし穴を見つけましたが、問題は解決しませんでした。ついに自分でも分...

Vite2.x に基づく Vue 3.x プロジェクトの実装

Vue 3.x プロジェクトの作成 npm init @vitejs/app my-vue-app ...

Vueデータ割り当て問題の解決

私が長い間遭遇してきた問題を要約してみましょう。プロジェクトでは、フロントエンドをレンダリングするた...

Docker で Confluence をデプロイするための完全な手順

Confluence は有料ですが、クラックして使用できます (購入が推奨され、正規版がサポートされ...

Ubuntu 18.04 が VMware 仮想マシンでネットワークに接続できない問題の解決策

仮想マシン内のUbuntu 18.04がネットワークに接続できない問題の解決策は次のとおりですVMw...

MySQLの論理アーキテクチャに関する深い理解

MySQL は現在、ほとんどの企業や事業体で使用されているデータベースです。MySQL が使用される...

MySQLのさまざまなオブジェクトのサイズと長さの制限について話しましょう

目次識別子の長さ制限権限テーブルの範囲フィールドの長さ制限データベースとテーブルの数の制限テーブルサ...

CSS の歪んだ影の実装コード

この記事では、CSS ワープ シャドウの実装コードを紹介し、皆さんと共有します。詳細は以下の通りです...

Linux での MySQL 5.7.16 無料インストール バージョンのグラフィック チュートリアル

この記事では、参考までにMySQL 5.7.16の無料インストール版のチュートリアルを紹介します。具...