生成されたファイル拡張子を置き換えるzshプロセスを指定します。

生成されたファイル拡張子を置き換えるzshプロセスを指定します。

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

関連情報