目次
標準入力とコマンドラインパラメータではどちらが優先されますか?
ホームページ 運用・保守 Linuxの運用と保守 Linuxのパイプ文字とは何ですか

Linuxのパイプ文字とは何ですか

Jun 17, 2022 pm 03:42 PM
linux

Linux では、パイプ文字は「|」で、主に 2 つ以上のコマンドを結合し、1 つのコマンドの出力を次のコマンドの入力として使用するために使用されます。構文は「command1 | command2」です。 [ | commandN... ]" の場合、「|」文字の左側にあるコマンドの出力が、「|」文字の右側にあるコマンドの入力として使用されます。パイプ文字は連続して使用でき、最初のコマンドの出力は 2 番目のコマンドの入力として使用され、2 番目のコマンドの出力は 3 番目のコマンドの入力として使用されます。

Linuxのパイプ文字とは何ですか

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

シェルには、2 つ以上のコマンド (プログラムまたはプロセス) を接続し、1 つのコマンドの出力を次のコマンドの入力として使用する機能もあります。コマンドはパイプラインを形成します。

Linux パイプでは、垂直バー | を使用して複数のコマンドを接続します。これはパイプ文字と呼ばれます。

command1 | command2
command1 | command2 [ | commandN... ]
ログイン後にコピー

2 つのコマンドの間にパイプを設定すると、パイプ記号 | の左側のコマンドの出力が右側のコマンドの入力になります。最初のコマンドが標準出力に書き込み、2 番目のコマンドが標準入力から読み取る限り、2 つのコマンドはパイプを形成できます。ほとんどの Linux コマンドを使用してパイプを形成できます。

パイプ文字は連続して使用できます。最初のコマンドの出力は 2 番目のコマンドの入力として使用され、2 番目のコマンドの出力は 3 番目のコマンドの入力として使用されます。すぐ。

Linuxのパイプ文字とは何ですか

ここで、command1 には正しい出力が必要であり、command2 は command2 の出力結果を処理できなければならず、command2 は正しい出力結果のみを処理できることに注意してください。 command1 のエラーメッセージを処理するのではなく、command1 の結果を出力します。

例: hello.sh ファイルを並べ替え、並べ替えと重複排除を行った後、「better」を含む行を見つけます。

コマンドは次のとおりです。 : cat hello.sh | sort | uniq | grep 'better'

  • テキストの表示
  • Sort
  • Deduplication
  • Filter
    Linuxのパイプ文字とは何ですか

[1] 最初のステップ - テキストの表示

最初に cat コマンドを使用してテキストを表示します。画面に表示される内容が出力です。 cat コマンドの結果

[root@linuxforliuhj test]# cat hello.sh 
hello this is linux
be better
be better
i am lhj
hello this is linux
i am lhj
i am lhj
be better
i am lhj
have a nice day
have a nice day
hello this is linux
hello this is linux
have a nice day
zzzzzzzzzzzzzz
dddddddd
gggggggggggggggggggg
[root@linuxforliuhj test]#
ログイン後にコピー

[2] 2 番目のプロセス - ソート

前の cat コマンドによって出力された結果をパイプライン経由で sort コマンドにスローします。これにより、sort コマンドはテキストをソートします。前の cat コマンドによる出力

[root@linuxforliuhj test]# cat hello.sh | sort
be better
be better
be better
dddddddd
gggggggggggggggggggg
have a nice day
have a nice day
have a nice day
hello this is linux
hello this is linux
hello this is linux
hello this is linux
i am lhj
i am lhj
i am lhj
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]#
ログイン後にコピー
ログイン後にコピー

[3] 3 番目のプロセス - 重複排除

uniq を紹介した前の記事で述べたように、sort は uniq と組み合わせて使用​​すると効果的に重複排除できるため、sortパイプラインを介して処理され、出力されます。 テキストは処理のために uniq にスローされるため、uniq は並べ替えられたテキストを処理します。これにより重複を効果的に削除できます。

[root@linuxforliuhj test]# cat hello.sh | sort | uniq
be better
dddddddd
gggggggggggggggggggg
have a nice day
hello this is linux
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]#
ログイン後にコピー

[4] 4 番目のステップ - フィルタリング

フィルタリングの最後のステップは同じです。前のコマンド、つまり uniq コマンドの処理後にテキスト出力をフィルタリングすることです。

[root@linuxforliuhj test]# cat hello.sh | sort | uniq | grep 'better'
be better
[root@linuxforliuhj test]#
ログイン後にコピー

ここが重要なポイントです!

ここが重要なポイントです!

ここがポイントです!

上記の cat、sort、uniq、grep などこれらのコマンドは標準入力から読み取ることができるため、コマンドはすべてパイプ文字をサポートしています。処理されるテキスト (つまり、標準入力からパラメータを読み取る)。一部のコマンド (rm、kill、その他のコマンドなど) はサポートされていません。標準入力からのパラメータの読み取りは可能ですが、コマンド ライン (つまり、rm コマンド) からのパラメータの読み取りのみをサポートします。削除するファイルまたはディレクトリは後で指定する必要があり、強制終了するプロセス番号は kill コマンドの後に指定する必要があります。 )

それでは、どのようなコマンドがパイプをサポートし、どのようなコマンドがパイプをサポートしないのでしょうか? ?
一般に、sort、uniq、grep、awk、sed などのテキストを処理するコマンドはすべてパイプをサポートしますが、テキストを処理しないコマンド (rm や ls など) はパイプをサポートしません。

[root@linuxforliuhj test]# cat hello.sh | sort
be better
be better
be better
dddddddd
gggggggggggggggggggg
have a nice day
have a nice day
have a nice day
hello this is linux
hello this is linux
hello this is linux
hello this is linux
i am lhj
i am lhj
i am lhj
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]#
ログイン後にコピー
ログイン後にコピー
ソート後にパラメータがない場合、パイプ文字によってスローされた前のコマンドの出力が処理されます (つまり、前のコマンドの標準出力がこのコマンドの標準入力として使用されます) )

[root@linuxforliuhj test]# ls
beifen.txt  hello.sh  mk  read.ln  read.sh  read.txt  sub.sh
[root@linuxforliuhj test]# ls | grep read.sh
read.sh
[root@linuxforliuhj test]# ls | grep read.sh | rm
rm: missing operand
Try 'rm --help' for more information.
[root@linuxforliuhj test]#
ログイン後にコピー

When 削除されたファイルが rm の後に指定されていない場合、パラメーターが欠落しているとしてエラーが報告されます。したがって、rm などのコマンドは、標準入力からのパラメーターの読み取りをサポートしません。これらは、標準入力からのパラメーターの指定のみをサポートします。コマンドライン、つまり削除されたファイルを指定します。

標準入力とコマンドラインパラメータではどちらが優先されますか?

次の 2 つのファイルがあります

[root@linuxforliuhj test]# cat a.txt 
aaaa
dddd
cccc
bbbb
[root@linuxforliuhj test]# cat b.txt 
1111
3333
4444
2222
[root@linuxforliuhj test]#
ログイン後にコピー

コマンドを実行します: cat a.txt | sort

[root@linuxforliuhj test]# cat a.txt | sort
aaaa
bbbb
cccc
dddd
[root@linuxforliuhj test]#
ログイン後にコピー

sort のコマンド ライン パラメーターが空の場合、デフォルトでは前者が使用されます コマンドの出力結果がこのコマンドの入力として使用されます

コマンドを実行します: cat a.txt | sort b.txt

[root@linuxforliuhj test]# cat a.txt | sort b.txt 
1111
2222
3333
4444
[root@linuxforliuhj test]#
ログイン後にコピー

sort のコマンド ライン パラメータ (ここでは b.txt) が空でない場合、sort は標準入力のパラメータを読み取らず、コマンド ライン パラメータを読み取ります。

コマンドを実行します: cat a.txt | sort b.txt -

[root@linuxforliuhj test]# cat a.txt | sort b.txt -
1111
2222
3333
4444
aaaa
bbbb
cccc
dddd
[root@linuxforliuhj test]#
ログイン後にコピー

" - "は、標準入力、つまりコマンド cat a.txt の出力を意味します。これは、ファイル b.txt と標準入力を一緒に並べ替えることと同じです。 a.txt b.txt

の並べ替えと同等

[root@linuxforliuhj test]# sort a.txt b.txt
1111
2222
3333
4444
aaaa
bbbb
cccc
dddd
[root@linuxforliuhj test]#
ログイン後にコピー

思考:对于rm、kill等命令,我们写脚本时常常会遇到需要查询某个进程的进程号然后杀掉该进程,查找某个文件然后删除它这样的需求,该怎么办呢?那就用xargs吧!

相关推荐:《Linux视频教程

以上がLinuxのパイプ文字とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

rootとしてmysqlにログインできません rootとしてmysqlにログインできません Apr 08, 2025 pm 04:54 PM

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

c言語条件付き編集:初心者向けの詳細なガイドへの実践的なアプリケーション c言語条件付き編集:初心者向けの詳細なガイドへの実践的なアプリケーション Apr 04, 2025 am 10:48 AM

c言語条件付きコンパイルは、コンパイル時間条件に基づいてコードブロックを選択的にコンパイルするメカニズムです。導入方法には、#IFおよび#ELSEディレクティブを使用して、条件に基づいてコードブロックを選択します。一般的に使用される条件付き式には、STDC、_WIN32、Linuxが含まれます。実用的なケース:オペレーティングシステムに従って異なるメッセージを印刷します。システムの数字数に応じて異なるデータ型を使用します。コンパイラに応じて、異なるヘッダーファイルがサポートされています。条件付きコンパイルにより、コードの移植性と柔軟性が向上し、コンパイラ、オペレーティングシステム、CPUアーキテクチャの変更に適応できます。

rust錆自明】はじめに rust錆自明】はじめに Apr 04, 2025 am 08:03 AM

1.0.1序文このプロジェクト(コードとコメントを含む)は、私の独学の錆の間に記録されました。不正確または不明確な声明があるかもしれませんが、謝罪してください。あなたがそれから利益を得るなら、それはさらに良いです。 1.0.2なぜRustrustは信頼性が高く効率的ですか? Rustは、CとCを同様のパフォーマンスであり、セキュリティが高くなり、CやCのようなエラーを確認するために頻繁な再コンパイルを必要としません。主な利点には、メモリセキュリティ(nullポインターの防止、ぶら下がりポインター、およびデータ競合の防止)が含まれます。スレッドセーフ(実行前にマルチスレッドコードが安全であることを確認してください)。未定義の動作を避けてください(例:境界のない配列、未知の変数、または解放されたメモリへのアクセス)。 Rustは、ジェネリックなどの最新の言語機能を提供します

Linuxの5つの基本コンポーネントは何ですか? Linuxの5つの基本コンポーネントは何ですか? Apr 06, 2025 am 12:05 AM

Linuxの5つの基本コンポーネントは次のとおりです。1。カーネル、ハードウェアリソースの管理。 2。機能とサービスを提供するシステムライブラリ。 3.シェル、ユーザーがシステムと対話するインターフェイス。 4.ファイルシステム、データの保存と整理。 5。アプリケーション、システムリソースを使用して機能を実装します。

MySQLを解決する方法は開始できません MySQLを解決する方法は開始できません Apr 08, 2025 pm 02:21 PM

MySQLの起動が失敗する理由はたくさんあり、エラーログをチェックすることで診断できます。一般的な原因には、ポートの競合(ポート占有率をチェックして構成の変更)、許可の問題(ユーザー許可を実行するサービスを確認)、構成ファイルエラー(パラメーター設定のチェック)、データディレクトリの破損(テーブルスペースの復元)、INNODBテーブルスペースの問題(IBDATA1ファイルのチェック)、プラグインロード障害(エラーログのチェック)が含まれます。問題を解決するときは、エラーログに基づいてそれらを分析し、問題の根本原因を見つけ、問題を防ぐために定期的にデータをバックアップする習慣を開発する必要があります。

MySQLはAndroidで実行できますか MySQLはAndroidで実行できますか Apr 08, 2025 pm 05:03 PM

MySQLはAndroidで直接実行できませんが、次の方法を使用して間接的に実装できます。Androidシステムに構築されたLightWeight Database SQLiteを使用して、別のサーバーを必要とせず、モバイルデバイスアプリケーションに非常に適したリソース使用量が少ない。 MySQLサーバーにリモートで接続し、データの読み取りと書き込みのためにネットワークを介してリモートサーバー上のMySQLデータベースに接続しますが、強力なネットワーク依存関係、セキュリティの問題、サーバーコストなどの短所があります。

C言語関数ライブラリはどこにありますか? C言語関数ライブラリを追加する方法は? C言語関数ライブラリはどこにありますか? C言語関数ライブラリを追加する方法は? Apr 03, 2025 pm 11:39 PM

C Language Functionライブラリは、さまざまな機能を含むツールボックスであり、さまざまなライブラリファイルに編成されています。ライブラリを追加するには、コンパイラのコマンドラインオプションを介して指定する必要があります。たとえば、GCCコンパイラは-Lオプションを使用して、ライブラリ名の略語が続きます。ライブラリファイルがデフォルトの検索パスの下にない場合は、-Lオプションを使用してライブラリファイルパスを指定する必要があります。ライブラリは、静的ライブラリと動的ライブラリに分けることができます。静的ライブラリはコンパイル時にプログラムに直接リンクされ、動的ライブラリは実行時にロードされます。

特定のシステムバージョンでMySQLが報告したエラーのソリューション 特定のシステムバージョンでMySQLが報告したエラーのソリューション Apr 08, 2025 am 11:54 AM

MySQLのインストールエラーのソリューションは次のとおりです。1。システム環境を慎重に確認して、MySQL依存関係ライブラリの要件が満たされていることを確認します。異なるオペレーティングシステムとバージョンの要件は異なります。 2.エラーメッセージを慎重に読み取り、依存関係のインストールやSUDOコマンドの使用など、プロンプト(ライブラリファイルの欠落やアクセス許可など)に従って対応する測定値を取得します。 3.必要に応じて、ソースコードをインストールし、コンパイルログを慎重に確認してみてください。これには、一定量のLinuxの知識と経験が必要です。最終的に問題を解決する鍵は、システム環境とエラー情報を慎重に確認し、公式の文書を参照することです。

See all articles