微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

osx – 如何在bash中创建一个特定扩展名的临时文件?

我正在写一个 shell脚本,我需要创建一个具有一定扩展名的临时文件.

我试过了

tempname=`basename $0`
TMPPS=`mktemp /tmp/${tempname}.XXXXXX.ps` || exit 1

tempname=`basename $0`
TMPPS=`mktemp -t ${tempname}` || exit 1

既不起作用,因为第一个创建一个带有文字“XXXXXX”的文件名,第二个不给扩展名选项.

我需要扩展名,以便预览不会拒绝打开该文件.

编辑:我结束了pid和mktemp的组合,我希望是安全的:

tempname=`basename $0`
TMPTMP=`mktemp -t ${tempname}` || exit 1
TMPPS="$TMPTMP.$$.ps" 
mv $TMPTMP $TMPPS || exit 1

它容易受到拒绝服务攻击,但我不认为更严重.

最新版本的mktemp offer –suffix:
--suffix=SUFF
          append SUFF to TEMPLATE.  SUFF must not contain slash.  This option is implied if TEMPLATE does not end in X.

$mktemp /tmp/banana.XXXXXXXXXXXXXXXXXXXXXXX.mp3
/tmp/banana.gZHvMJfDHc2CTilINNuq2P0.mp3

我相信这需要coreutils> = 8左右.

如果您创建一个没有后缀的临时文件(较旧的mktemp版本),并且您正在重命名以附加一个文件,则可以做的最少的事情是检查文件是否已经存在.它不会保护你免受竞争条件的伤害,但如果已经存在一段时间的文件,它会保护你.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐