程序的管道输出仅输出到文件

Iir*_*ayn 3 linux shell pipe

pico2wave只支持输出到文件(编辑:带扩展名.wav)。如何在aplay不清理任何命名管道或临时文件或包装脚本的情况下将输出强制转换为管道?

即,pico2wave -w tmp.wav "test" && aplay tmp.wav && rm tmp.wav创建一个临时文件,因此不是我正在寻找的解决方案。

Iir*_*ayn 5

关于通用解决方案的说明:对于许多需要文件名的程序,您可以提供路径/dev/stdout(一个指向 的链接/proc/self/fd/1,假设所述文件存在),它们会很乐意将输出发送到stdout. 也可以在bashwith 中使用进程替换cat,即foo -f >(cat) args | bar(感谢g-man)。

因为pico2wave检查文件扩展名,可能的解决方案是符号链接/dev/stdout到具有适当扩展名的路径,理想情况下是诸如/var/local/. 这确实创建了一个额外的文件,但不是每个进程: ln -s /dev/stdout /var/local/pico2wave.wav,然后pico2wave -w /var/local/pico2wave.wav "test" | aplay工作。