Especificando a extensão do arquivo produzida pela substituição do processo zsh

2

Eu quero usar a substituição de processos do zsh para criar um arquivo temporário que possa ser lido por outro programa. No entanto, o arquivo que ele gera não possui extensão de arquivo, portanto, a leitura do programa se recusa a continuar.

Isso pode ser demonstrado por:

$ echo =(ls)
/tmp/zshmgIWvT

O que eu quero que aconteça é produzir um nome de arquivo como /tmp/zshmgIWvT.wav

O zsh pode fazer isso?

    
por Miguel 18.11.2018 / 03:12

1 resposta

6

Em algum lugar nas profundezas de zshparam(1) , pode-se encontrar:

   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.

Então

% () { TMPSUFFIX=.wav; print =(ls); unset TMPSUFFIX }
/Users/jhqdoe/tmp/zshsQhnnV.wav
% print $TMPSUFFIX

% 

Você também pode definir TMPPREFIX especialmente em sistemas compartilhados para ajudar a evitar várias /tmp falhas de segurança.

    
por 18.11.2018 / 17:15