web-dev-qa-db-ja.com

Unix-フィルターコマンド

Unixで利用できる「filter-command」について知りたいのですが。私はこれに関して混乱しています:

  1. 「フィルターコマンド」の目的は何ですか?
  2. Unixで使用できるフィルターコマンドはどれですか?

私はウェブ上でいくつかの本/記事を読みました、いくつかの本で私はいくつかのフィルターコマンドを見つけました、そしていくつかの本で私はいくつかの他のものを見つけました。

1
Paresh Mayani

文脈なしであなたが何を求めているのかわかりません。 「従来の」Unixツールは、標準入力から読み取り、標準出力に書き込むため、パイプを使用してそれらをチェーン化できます。コマンド:

 ls | grep "banana" | more

標準入力から読み取り、標準出力に書き込むものはフィルターです。

ここに記事があります: http://en.wikipedia.org/wiki/Filter_(Unix

6
delete

フィルタコマンドは、実際にはUNIX上のほとんどすべてのコマンドラインプログラムです。

STDINから読み取り、STDOUTに出力できるすべてのプログラムをフィルターとして使用できます。

ただし、例外があります。そのような例外の1つはcpioです。これは、STDINからファイルのリストを取得して、出力時にアーカイブを作成します。

STDINから読み取ることができないように見えるコマンドがいくつかありますが、それらのコマンドがSTDINから読み取るためのファイルパラメータとして-を使用するか、STDOUTのようにcatに書き込むかどうかを確認する必要があります。

$ cat f - g

Fの内容、次に標準入力、次にgの内容を出力します。

ただし、プログラムでそれを使用しない場合でも、それでも通常はプログラムを強制的にフィルターとして機能させることができます。

たとえば、wgetを取り、そのプログラムをSTDOUTに出力したいとします。

$ wget -O /dev/stdout http://stackoverflow.com/ | less

つまり:/dev/stdin/dev/stdout、および/dev/stderrをファイルとして使用して、プログラムに標準IO記述子の読み取りまたは出力を強制できます。

別の注意点:パイプの長さは好きなだけ長くすることができるので、あるプログラムから別のプログラムにパイプして、基本的にフィルターの長いチェーンにすることができます。

$ cat file | xz | ccrypt &>/dev/null
2
polemon