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

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

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

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

答案1

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

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

相关内容