如何安全地创建临时文件
时间:2020-01-09 10:42:11 来源:igfitidea点击:
问题描述:如何在UNIX Bash shell下安全地创建临时文件?
解决方法:有很多方法:
mktemp命令创建临时唯一文件名
$RANDOM使用$RANDOM变量
mktemp命令
mktemp实用程序采用给定的文件名模板,并覆盖其中的一部分以创建唯一的文件名。
模板可以是任何追加了X的文件名,例如/tmp/tfile.XXXXXXXXXX。
例如,创建一个临时文件:
$ mktemp /tmp/output.XXXXXXXXXX
输出:
/tmp/output.qBYDtF7199
将ls命令输出发送到/tmp/output.qBYDtF7199:
$ ls > /tmp/output.qBYDtF7199
但是,您可能需要将临时文件名/tmp/output.qBYDtF7199存储到shell变量中:
TMPFILE=$(mktemp /tmp/output.XXXXXXXXXX) ls > $TMPFILE
创建一个临时目录
-d选项创建目录而不是文件。
TMPDIR=$(mktemp -d /tmp/output.XXXXXXXXXX) cd $TMPDIR # do something
另一个例子:
TMPFILE=‘mktemp -t /tmp/out.myapp.XXXXXXXXXX‘ && { # Safe to use $TMPFILE in this block echo data > $TMPFILE ... # do something # clean up rm -f $TMPFILE }
使用$RANDOM变量
Bash还提供了带有随机值的$RANDOM变量,您可以使用它来创建文件或者目录:
TEMFILE=/tmp/$RANDOM > $TEMFILE # create directory TEMDIR=/tmp/$RANDOM.$RANDOM mkdir $TEMDIR # do something...