Unix - 过滤命令

Unix - 过滤命令

我想了解 Unix 中可用的“过滤命令”。我对此感到困惑:

  1. “Filter-Command”的目的是什么?
  2. Unix 中有哪些可用的过滤命令?

我在网上读过一些书籍/文章,在一些书中我发现了一些过滤器命令,在一些书中我发现了其他一些命令。

答案1

如果没有上下文,我不确定你在问什么。 “传统”Unix 工具从标准输入读取并写入标准输出,因此您可以使用管道将它们链接在一起,即 |命令:

 ls | grep "banana" | more

从标准输入读取并写入标准输出的东西是过滤器。

这里有一篇文章:http://en.wikipedia.org/wiki/Filter_(Unix

答案2

实际上,过滤器命令几乎是 UNIX 上的任何命令行程序。

每个可以读取STDIN和输出的程序都STDOUT可以用作过滤器。

但也有例外。其中一个例外是cpio,它获取文件列表以STDIN在输出时创建存档。

有一些命令似乎无法读取STDIN,但您应该检查这些命令是否用作-文件参数来读取STDIN或写入STDOUT,例如cat

$ cat f - g

输出f的内容,然后是标准输入,然后是g的内容。

但即使你的程序不使用它,你也可以仍然通常强制程序充当过滤器:

例如wget,您想让该程序输出到STDOUT

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

IE:您可以使用/dev/stdin/dev/stdout/dev/stderr, 作为文件来强制程序读取或输出到标准 IO 描述符。

另一个旁注:管道的长度可以任意长,因此您可以从一个程序通过管道传输到另一个程序,基本上使其成为一长串过滤器:

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

相关内容