shell使用mktemp命令创建临时文件

在生产环境中,很多情况下在脚本中会使用一些临时的普通文件,比如 1.txttest.txt。为了简单,可能 A 员工在维护时脚本中使用了一个 1.txt,B员工在维护的时候也使用了 1.txt,这时候就造成了文件使用上的冲突。为了尽可能的避免这类情况的发生,我们就可以使用 mktemp 命令创建属于自己的临时文件,当然也可以创建临时的目录。

用法格式

1
mktemp [OPTION]... [TEMPLATE]

其中 TEMPLATE 必须以一个或多个 X 结尾

1
2
3
4
[user1@study ~]$ mktemp test.XXX
test.xW0
[user1@study ~]$ ls
test.xW0

命令选项

  • -q:静默模式,执行时若发生错误,不会显示任何信息
  • -d:创建一个临时目录
  • -u:暂存文件会在 mktemp 结束前先行删除
  • -p:指定要把临时文件创建在哪个目录下,必须指定绝对路径

脚本中用到的临时文件我们可以使用命令替换的方式,将临时文件名赋值给变量,在操作完成后删除这个变量即可

1
2
3
4
5
6
7
8
9
10
11
[user1@study ~]$ cat test.sh
#!/bin/bash
FILE=$(mktemp /tmp/ipinfo.XXXX)
echo "hello" >> ${FILE}
ls ${FILE}
cat ${FILE}
[user1@study ~]$ bash test.sh
/tmp/ipinfo.cHrw
hello
[user1@study ~]$ mktemp -p /tmp/
/tmp/tmp.PDDDcAuBzk
有钱任性,请我吃包辣条
0%