Shell
指定 zsh 程序替換產生的文件副檔名
我想使用 zsh 的程序替換來創建一個臨時文件,然後可以被另一個程序讀取。但是,它生成的文件沒有文件副檔名,因此讀取它的程序拒絕繼續。
這可以通過以下方式證明:
$ echo =(ls) /tmp/zshmgIWvT
我想要發生的是產生一個文件名,如
/tmp/zshmgIWvT.wav
zsh 可以這樣做嗎?
在某個人的深處
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
安全漏洞。