18.Linux Shell中的mktemp命令使用


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


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 命令进入创建的目录,在其中创建临时文件。通过分配文件描述符,用来存储脚本的输出。



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


  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值