mktemp命令的使用方法:创建临时文件或目录并打印其名称

在许多情况下,创建具有给定大小的文件会很有帮助,例如,在部署新文件服务器之后,你可能需要检查上载限制,最大上载大小和文件下载速度等,在这种情况下,你可以创建特定大小的文件并在文件服务器上测试它们,还有一个名为mktemp的专用命令行工具可用于创建临时文件和目录,mktemp命令安全地创建临时文件或目录并打印其名称,所有文件和目录都将保存在系统的临时目录中,即/tmp,所以你不需要手动清理它们,重新启动系统后,临时文件将消失。

 

mktemp命令的使用方法

Mktemp是GNU coreutils包的一部分,我们现在将看到一些实际的例子。

要创建新的临时文件,只需运行:

$ mktemp

将看到如下输出:

/tmp/tmp.yjcVSaKkuv

正如你在输出中看到的那样,在/tmp目录中创建了一个随机名称为“tmp.yjcVSaKkuv”的新临时文件,这个文件只是一个空文件。

要创建临时目录,请使用-d选项:

$ mktemp -d

这将在/tmp文件夹中创建一个随机的空目录。

样本输出:

/tmp/tmp.vrhruN1WVX

所有文件都将使用u+rw权限创建,目录使用u+rwx,减去umask限制。

你可以使用ls命令验证文件或目录权限:

$ ls -al /tmp/tmp.yjcVSaKkuv 

-rw------- 1 sk sk 0 Aug 22 16:51 /tmp/tmp.yjcVSaKkuv

$ ls -al /tmp/tmp.vrhruN1WVX/

total 8

drwx------ 2 sk sk 4096 Aug 22 16:58 .

drwxrwxrwt 12 root root 4096 Aug 22 17:36 ..

参考:ls命令_Linux ls命令使用详解:显示目录内容列表

正如我已经说过的,所有文件和目录都是使用随机文件名创建的,我们还可以使用自定义名称创建临时文件或目录,为此,只需在文件名末尾添加至少3个连续的'X',如下所示:

$ mktemp ostechnixXXX

ostechnixq70

同样,要创建目录,只需运行:

$ mktemp -d ostechnixXXX

ostechnixcBO

请注意,如果选择自定义名称,将在当前工作目录中创建文件/目录,而不是/tmp位置,在这种情况下,你需要手动清理它们。

另外,你可能已经注意到,文件名中的X替换为随机字符,但是,你可以添加任何后缀。

例如,我想在文件名的末尾添加“blog”,因此,我的命令是:

$ mktemp ostechnixXXX --suffix=ywnz

ostechnixZuZywnz

现在我们在文件名末尾有后缀“ywnz”。

如果你不想创建任何文件或目录,只需执行如下所示的运行即可:

$ mktemp -u

/tmp/tmp.oK4N4U6rDG

如需帮助,请运行:

$ mktemp --help

参考:help命令_Linux help命令使用详解:显示帮助信息

 

为什么我们真的需要mktemp?

你可能想知道为什么我们需要“mktemp”,而我们可以使用“touch filename”命令轻松创建空文件,mktemp命令主要用于创建具有随机名称的临时文件/目录,所以,我们不需要费心找出这些名字,由于mktemp随机化名称,因此不会发生任何名称冲突,此外,mktemp使用权限600安全地创建文件/目录,因此其他用户无法访问它,有关更多详细信息,请查看手册页:

$ man mktemp

 

Linux mktemp命令用于建立暂存文件。

mktemp建立的一个暂存文件,供shell script使用。

语法

mktemp [-qu][文件名参数]

参数

  • -q  执行时若发生错误,不会显示任何信息。
  • -u  暂存文件会在mktemp结束前先行删除。
  • [文件名参数]  文件名参数必须是以"自订名称.XXXXXX"的格式。

实例

使用mktemp 命令生成临时文件时,文件名参数应当以"文件名.XXXX"的形式给出,mktemp 会根据文件名参数建立一个临时文件。在命令行提示符输入如下命令:

mktemp tmp.xxxx #生成临时文件 

使用该命令后,可使用dir 或ls看当前目录,得到如下结果:

cmd@cmd-desktop:~$ mktemp tmp.xxxx #生成临时文件  
cmd@cmd-desktop:~$dir #查看当前目录  
file test testfile testfile1 tmp.3847 #生成了tmp.3847 

由此可见,生成的临时文件为tmp.3847,其中,文件名参数中的"XXXX"被4 个随机产生的字符所取代。

 

 

### 如何在Linux系统的临时目录创建并命名文件 在 Linux 系统中,`/tmp` 是一个特殊的目录,用于存储临时文件。这些文件通常会在系统重启时被清除。如果需要在 `/tmp` 下创建临时文件,可以使用 `mktemp` 命令来实现安全的文件创建过程[^2]。 以下是具体方法: #### 使用 mktemp 创建临时文件 `mktemp` 命令能够自动生成带有随机名称的文件,并将其放置在指定的目录中(默认为 `/tmp`)。这有助于防止文件名冲突以及提高安全性。 ```bash FILE=$(mktemp /tmp/my_temp_file.XXXXXX) echo "这是一个临时文件的内容" > $FILE cat $FILE rm -f $FILE ``` 上述脚本中的 `my_temp_file.XXXXXX` 部分表示模板字符串,其中 `XXXXXX` 将由系统替换为随机字符序列。这样生成的文件名具有较高的唯一性和不可预测性。 #### 手动命名临时文件 除了利用 `mktemp` 自动生成名字外,也可以手动定义文件名并将之置于 `/tmp` 中。不过需要注意的是,在这种情况下要自行确保不会与其他程序使用的文件发生冲突。 ```bash TEMP_FILE="/tmp/example.txt" touch "$TEMP_FILE" echo "这是另一个例子." >> "$TEMP_FILE" # 当完成操作后记得清理资源 rm -f "$TEMP_FILE" ``` 对于更复杂的场景比如涉及整个目录作为临时空间,则可考虑采用如下方式构建临时目录结构再执行相应任务最后移除它: ```bash DIR=$(mktemp -d /tmp/myapp-tmpdir.XXXXXX) cd "$DIR" # ... do work here ... cd - rm -rf "$DIR" ``` 这里 `-d` 参数告知 `mktemp` 要建立的是一个新目录而非单个文件。 关于文件管理方面的一般技巧还有通过 `cp`, `mv` 这些基础工具来进行复制者转移的同时达到更改原对象称呼的效果即所谓重命名功能[^3]。然而针对临时用途而言推荐优先选用自动化程度高且具备良好保护机制的方法如前所述那样借助专门设计好的实用程序处理会更加稳妥可靠一些。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值