如何安全地创建临时文件

时间: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...