Unixで利用できる「filter-command」について知りたいのですが。私はこれに関して混乱しています:
私はウェブ上でいくつかの本/記事を読みました、いくつかの本で私はいくつかのフィルターコマンドを見つけました、そしていくつかの本で私はいくつかの他のものを見つけました。
文脈なしであなたが何を求めているのかわかりません。 「従来の」Unixツールは、標準入力から読み取り、標準出力に書き込むため、パイプを使用してそれらをチェーン化できます。コマンド:
ls | grep "banana" | more
標準入力から読み取り、標準出力に書き込むものはフィルターです。
ここに記事があります: http://en.wikipedia.org/wiki/Filter_(Unix )
フィルタコマンドは、実際には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