생성된 파일 확장자를 대체할 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

관련 정보