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

推薦する

ウェブページの幅を携帯電話の画面(ビューポート)の幅に自動的に適応させる実装コード

一般的な書き方は次のとおりです。 XML/HTML コードコンテンツをクリップボードにコピー<...

Docker Composeのデプロイと基本的な使い方の詳しい説明

1. Docker Composeの概要Compose は、マルチコンテナ Docker アプリケー...

アニメーションとトランジションの違い

CSS3アニメーションとJSアニメーションの違いJSはフレームアニメーションを実装しますCSS3はト...

MySQLデータベースのトランザクション分離レベルの詳細な説明

データベーストランザクション分離レベルデータベース トランザクションには、低から高まで 4 つの分離...

MySQLバイナリログを介してデータベースデータを復元する方法の詳細な説明

ウェブサイト管理者は、さまざまな理由や操作により、ウェブサイトのデータを誤って削除したり、ウェブサイ...

Vue のライフサイクルとフック関数の詳細な説明と典型的な面接の質問

目次1. Vue ライフサイクル2. フック機能2.1 4つの段階と8つの方法に分かれています。 2...

アバターと国旗の統合を実現する1行のCSSコード

今日は建国記念日で、誰もが祖国の誕生日をお祝いしようとしています。毎年この時期になると、WeChat...

Vue で手ぶれ補正とスロットリングを使用する方法

目次序文コンセプト安定意味使用シナリオコードVueでの使用スロットリング意味使用シナリオコードVue...

JavaScript 事前分析、オブジェクトの詳細

目次1. 事前分析1. 変数の事前解析と関数の事前解析1. 変数の事前解析2. 機能事前分析2. 事...

Docker で Oracle 11g イメージ構成をプルダウンする際の問題を分析する

1. イメージをプルするdocker pull レジストリ.cn-hangzhou.aliyuncs...

CSS変数を使用してダークモードを実装するためのサンプルコード

最近、WeChatはAppleによってダークモードの開発を強制されました。ますます多くのウェブサイト...

ハイパーリンクを使用してリンクファイルを開く HTML 方式の紹介

a および href 属性 HTML では、英語ではアンカーと呼ばれるハイパーリンクを表すために &...

単純なCSSの詳細に惚れ込むと、重要ではないものの、効率性が向上する可能性がある

CSS の将来は非常に楽しみです。一方では、まったく新しいページ レイアウト方法であり、他方では、ク...

Ubuntuで余分なカーネルを削除する方法

ステップ1: 現在のカーネルを表示する 読み取る $ uname -a Linux rew 4.15...

初心者向けウェブサイト構築チュートリアルの概要

これら 6 つの記事を書いた後、私は少し混乱し始めました。次にどこに書けばいいのか分かりません。ドメ...