Shell

指定 zsh 程序替換產生的文件副檔名

  • November 18, 2018

我想使用 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安全漏洞。

引用自:https://unix.stackexchange.com/questions/482459