我想了解 Unix 中可用的“过滤命令”。我对此感到困惑:
- “Filter-Command”的目的是什么?
- Unix 中有哪些可用的过滤命令?
我在网上读过一些书籍/文章,在一些书中我发现了一些过滤器命令,在一些书中我发现了其他一些命令。
答案1
如果没有上下文,我不确定你在问什么。 “传统”Unix 工具从标准输入读取并写入标准输出,因此您可以使用管道将它们链接在一起,即 |命令:
ls | grep "banana" | more
从标准输入读取并写入标准输出的东西是过滤器。
答案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