GNU/Linux >> Linux の 問題 >  >> Linux

パイプコマンドを実行するときにLinuxユーティリティは賢いですか?

ターミナルでいくつかのコマンドを実行していたところ、パイプコマンドを実行するときにUnix / Linuxはショートカットを使用するのでしょうか?

たとえば、100万行のファイルがあり、その最初の10行にhello worldが含まれているとします。 。コマンドgrep "hello world" file | head 最初のコマンドは10行が見つかるとすぐに停止しますか、それともファイル全体を最初に検索し続けますか?

承認された回答:

ある種。シェルは、実行しているコマンドが何を実行するかを認識していません。一方の出力をもう一方の入力に接続するだけです。

grepの場合 「helloworld」、次にheadという10行以上を検索します 必要な10行すべてがあり、パイプを閉じます。これにより、grepが発生します SIGPIPEで強制終了されるため、非常に大きなファイルのスキャンを続行する必要はありません。


Linux
  1. バックグラウンドおよびフォアグラウンドでのLinuxコマンドの実行

  2. Linuxで検索および検索コマンドを使用してファイルを検索する

  3. Linux のスパース ファイルとは

  1. fork() するときにファイル記述子は共有されますか?

  2. ファイル変更の監視 c++ linux

  3. ファイルを保存すると、メタデータはどこに移動しますか?

  1. 例を含む10以上のLinuxVIコマンド

  2. Linux – Gnu / linuxでファイルパーミッションなどを設定するさまざまな方法は何ですか?

  3. Linux – Unix / linuxファイルのディレクトリ構造情報をどのように検査しますか?