Linux/Debian - moreutils 中的“小便”有什么作用?

Ama*_*rus 28 linux unix debian command-line-interface process

我最近在 Debian(和 Ubuntu)中发现了“moreutils”包。它是一组方便的 unix 工具。

命令之一是“小便”。手册页说:

小便就像三通,但用于管道。

然而,这是一个简短的手册页,我已经提交了一个关于它的错误。有谁知道它的作用,如何使用它,为什么要使用它?

Tob*_*obu 35

以下是您可以用小便做的事情:

seq 5 -1 1 > file
cat file |pee 'sort -u > sorted' 'sort -R > unsorted'
Run Code Online (Sandbox Code Playgroud)

所以 pee 使用 shell 管道而不是文件。

bash 不需要小便,它可以将 shell 命令作为文件打开:

cat file |tee >(sort -u > sorted) >(sort -R > unsorted)
Run Code Online (Sandbox Code Playgroud)


Dan*_*ley 19

如果您tee先使用过,可能更容易理解。这个有用的旧工具接受标准输入并写出到多个文件,加上标准输出。下列:

echo "Hello world" | tee one two
Run Code Online (Sandbox Code Playgroud)

将创建两个文件,命名为onetwo,都包含字符串Hello world。它还将打印到您的终端。


现在pee执行类似的功能,但不是将输出重定向到多个文件,而是重定向到多个辅助命令,ala 管道。它与tee不将原始标准输入发送到标准输出的方面略有不同,因为将其与辅助命令的输出结合起来是没有意义的。以下非常简单的例子:

echo "Hello world" | pee cat cat
Run Code Online (Sandbox Code Playgroud)

将字符串输出Hello world到您的终端两次。这是因为 的两个实例中的每一个都cat接收标准输出并执行该cat操作,即打印。

  • 我正试图板着脸读最后一个例子,但失败了 (3认同)