我想使用 zsh 的进程替换来创建一个临时文件,然后可以由另一个程序读取。但是,它生成的文件没有文件扩展名,因此读取它的程序拒绝继续。
这可以通过以下方式证明:
$ echo =(ls)
/tmp/zshmgIWvT
我想要发生的是生成一个像这样的文件名/tmp/zshmgIWvT.wav
zsh可以做到这一点吗?
答案1
在人们内心深处的某个地方zshparam(1)
可能会发现:
TMPSUFFIX
A filename suffix which the shell will use for temporary files
created by process substitutions (e.g., `=(list)'). Note that
the value should include a leading dot `.' if intended to be
interpreted as a file extension. The default is not to append
any suffix, thus this parameter should be assigned only when
needed and then unset again.
所以
% () { TMPSUFFIX=.wav; print =(ls); unset TMPSUFFIX }
/Users/jhqdoe/tmp/zshsQhnnV.wav
% print $TMPSUFFIX
%
您可能还需要TMPPREFIX
特别在共享系统上进行设置,以帮助避免各种/tmp
安全缺陷。