18.Linux Shell中的mktemp命令使用

2024-01-09 21:53:12


欢迎访问个人网络日志🌹🌹知行空间🌹🌹


Linux Shell创建临时文件

Linux/tmp目录用来存放不需要永久保留的文件。大多数Linux发行版配置了系统在启动时自动清空/tmp目录的功能。系统上的任何用户账户都有权限读写/tmp目录中的文件。这为用户提供了一种创建临时文件的简单方法。

mktemp 命令可以用来创建临时文件,并保证创建文件名的唯一性。它会将文件的读和写权限分配给文件的属主,并将文件创建者设置成文件的属主。

在工作目录创建临时文件

默认情况下, mktemp 会在工作目录中创建一个文件。mktemp创建文件需要用户提供一个文件名模板,这个文件名模板可以包含任意文本文件名,只需要在文件名末尾加上6个大写的X就行了,系统会自动替换6个XXXXXX,生成唯一的标识名。

$ mktemp test_XXXXXX
# test_dtDrji
$ mktemp test_XXXXXX
# test_5AHGek
$ mktemp test_XXXXXX
# test_qRaG25

从上面的例子可以看到mktemp 命令的输出正是它所创建的文件的名字,在脚本中使用 mktemp 命令时,可能要将文件名保存到变量中,这样就能在后面的脚本中引用了。

#!/bin/bash
tempfile=$(mktemp test_XXXXXX)
exec 3>$tempfile
echo "This script writes to temp file $tempfile"
echo "line1" >&3
echo "line2" >&3
echo "line3" >&3
exec 3>&-
echo "Done creating temp file. The contents are:"
cat $tempfile

rm -f $tempfile 2> /dev/null

这样,就会用 mktemp 命令来创建临时文件并将文件名赋给 $tempfile 变量。rm -f $tempfile 2> /dev/null是吃掉rm命令的报错信息,不将其打印到显示器上。

/tmp 目录创建临时文件

mktemp命令支持很多选项,其中-t选项会强制mktemp 命令来在系统的临时目录\tmp中来创建该文件。

$ mktemp -t test_XXXXXX
# /tmp/test_N5I2D2
$ mktemp -t test_XXXXXX
# /tmp/test_1Iw2YW

正如上面的例子,mktemp -t 命令返回了创建文件的全路径名,而不仅仅是文件名。如此,可以在Linux系统上的任何目录下引用该临时文件。

#!/bin/bash
tempfile=$(mktemp -t tmp.XXXXXX)
exec 3>$tempfile
echo "line1" >&3
echo "line2" >&3
echo "The temp file is located at: $tempfile"
cat $tempfile
rm -f $tempfile

执行,

$ ./test.sh 
# The temp file is located at: /tmp/tmp.vETsgK
# line1
# line2

可以看到输出是被重定向到了tempfile文件中了。

3)创建临时目录

mktemp命令的-d选项用来创建一个临时路径。

$ mktemp -d test_XXXXXX
# test_rNaqHB
$ mktemp -dt test_XXXXXX
# /tmp/test_ntyfp9

结合这个选项,可以在当前目录中创建目录,然后用 cd 命令进入创建的目录,在其中创建临时文件。通过分配文件描述符,用来存储脚本的输出。



欢迎访问个人网络日志🌹🌹知行空间🌹🌹


文章来源:https://blog.csdn.net/lx_ros/article/details/135429751
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。