SuperAPI AI 工具集

process-substitution-fifos

编程与开发

查看项目

更新于 10-15 23:41

技能介绍

用途:在 Bash 中掌握进程替换、命名管道(FIFO)与高效数据流技术,实现无需临时文件的进程间通信与数据管道。

主要能力:输入进程替换 <(command) 可将命令输出当作文件参数,用于 diff <(sort a) <(sort b)、sort -m、paste、jq <(curl ...)、source <(...) 以及 while 循环避免子 shell 变量丢失;输出进程替换 >(command) 可一次写入多个目的地,如 tee >(logger) >(mail ...)、tar | tee >(gzip > x) >(sha256sum > y)。FIFO 部分涵盖 mkfifo、trap 清理、双向通信、生产者-消费者、文件描述符读写(exec 3<>fifo)。协程(Bash 4+)支持 coproc 与命名协程,用于与 bc、python3 等交互。Bash 5.3 提供无 fork 命令替换 ${ ...; } 与 ${| REPLY=...; },适合性能敏感管道。还包含 PIPESTATUS 错误检测、清理注册与超时读写模式。

使用方式:脚本通常以 #!/usr/bin/env bash 与 set -euo pipefail 开头;创建 FIFO 后用 trap 'rm -f ...' EXIT 清理;避免死锁可后台写端、以读写方式打开或使用非阻塞打开;Windows 上使用 Edit/Write 工具时路径必须用反斜杠。

适用场景:多源比较、流分流、实时日志过滤、生产者-消费者队列、与外部解释器交互、性能关键管道。

限制:协程池管理复杂,生产负载建议考虑 GNU Parallel;Bash 5.3 特性需对应版本;更复杂的多源比较、tee 式分流与清理模式见 references/advanced-patterns.md。