我最近在Debian(和Ubuntu)中发现了“ moreutils”软件包。它是便捷的Unix工具的集合。
命令之一是“小便”。手册页显示:
小便就像T恤,但用于管道。
但是,这是一个简短的手册页,我已对此提交了一个错误。有谁知道它的作用,如何使用,为什么要使用它?
我最近在Debian(和Ubuntu)中发现了“ moreutils”软件包。它是便捷的Unix工具的集合。
命令之一是“小便”。手册页显示:
小便就像T恤,但用于管道。
但是,这是一个简短的手册页,我已对此提交了一个错误。有谁知道它的作用,如何使用,为什么要使用它?
Answers:
这是您可以使用小便的方法:
seq 5 -1 1 > file
cat file |pee 'sort -u > sorted' 'sort -R > unsorted'
因此,小便使用Shell管道而不是文件。
bash不需要小便,它可以将shell命令作为文件打开:
cat file |tee >(sort -u > sorted) >(sort -R > unsorted)
tee >/dev/null
以避免复制标准输入到标准输出
cat file | pee 'grep this' 'grep that' > lines.with.this.or.that.txt
使用...使用tee来获取file
stdout 的副本。
>(command)
功能称为“ 流程替换”。
如果您tee
先使用过,可能更容易理解。这个有用的旧工具接受标准输入,并写出到多个文件以及标准输出。下列:
echo "Hello world" | tee one two
将创建两个名为one
和的文件,两个文件two
均包含字符串Hello world
。它还将打印到您的终端。
现在pee
执行类似的功能,但不是将输出重定向到多个文件,而是将其重定向到多个辅助命令,即ala管道。它与tee
不将原始stdin发送到stdout的方面稍有不同,因为将它与辅助命令的输出组合起来没有任何意义。以下是非常简单的示例:
echo "Hello world" | pee cat cat
将字符串输出Hello world
到终端两次。这是因为的两个实例中的每个实例都cat
接收标准输出并执行cat
打印操作。
stdin
每个脚本进行复制并为每个脚本提供克隆,以文件名模式进行数学运算,纯bash可以做到这一点吗?在AFAIU中,它会在括号内放大星号tee >(app1 app2 app3 app4)
,而不是>(app1) >(app2) >(app3) >(app4)
您的答案所示