使用|Linux 中的管道 ( ) 功能,我可以将标准输入转发链接到一个或多个输出流。
我可以使用tee将输出拆分为单独的子进程。
是否有连接两个输入流的命令?
我该怎么办?差异是如何工作的?
fre*_*eit 115
就我个人而言,我最喜欢的(需要 bash 和其他大多数 Linux 发行版的标准配置)
细节在很大程度上取决于这两件事的输出内容以及您希望如何合并它们......
输出中的 command1 和 command2 的内容在后面:
cat <(command1) <(command2) > outputfile
Run Code Online (Sandbox Code Playgroud)
或者,如果两个命令都输出您希望并排查看的相同数据的替代版本(我已将其与 snmpwalk 一起使用;一侧为数字,另一侧为 MIB 名称):
paste <(command1) <(command2) > outputfile
Run Code Online (Sandbox Code Playgroud)
或者,如果您想比较两个相似命令的输出(比如在两个不同目录上查找)
diff <(command1) <(command2) > outputfile
Run Code Online (Sandbox Code Playgroud)
或者,如果它们是某种排序的输出,请将它们合并:
sort -m <(command1) <(command2) > outputfile
Run Code Online (Sandbox Code Playgroud)
或者同时运行两个命令(虽然可能会有点混乱):
cat <(command1 & command2) > outputfile
Run Code Online (Sandbox Code Playgroud)
<() 运算符为每个命令设置一个命名管道(或 /dev/fd),将该命令的输出通过管道传输到命名管道(或 /dev/fd 文件句柄引用)中,并在命令行上传递名称。>() 有一个等价物。例如,您可以这样做:command0 | tee >(command1) >(command2) >(command3) | command4同时将一个命令的输出发送到其他 4 个命令。
Chr*_*s S 17
您可以使用 将两个蒸汽附加到另一个蒸汽cat,如大猩猩所示。
您还可以创建一个 FIFO,将命令的输出定向到该 FIFO,然后使用任何其他程序从 FIFO 中读取:
mkfifo ~/my_fifo
command1 > ~/my_fifo &
command2 > ~/my_fifo &
command3 < ~/my_fifo
Run Code Online (Sandbox Code Playgroud)
对于仅写入或读取文件的程序,或将仅输出标准输出/文件的程序与仅支持另一个的程序混合使用特别有用。
小智 11
(tail -f /tmp/p1 & tail -f /tmp/p2 ) | cat > /tmp/output
Run Code Online (Sandbox Code Playgroud)
/tmp/p1和/tmp/p2是你的输入管道,/tmp/output而是输出。
| 归档时间: |
|
| 查看次数: |
51648 次 |
| 最近记录: |