shell_60.Linux使用临时文件

这篇具有很好参考价值的文章主要介绍了shell_60.Linux使用临时文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用临时文件
1.创建本地临时文件
在默认情况下,mktemp 会在本地目录中创建一个文件。在使用 mktemp 命令时,只需指定一个文件名模板即可。
模板可以包含任意文本字符,同时在文件名末尾要加上 6 个 X:

$ mktemp testing.XXXXXX 
$ ls -al testing* 
-rw------- 1 rich rich 0 Jun 20 21:30 testing.UfIi13
$

2.mktemp 命令会任意地将 6 个 X 替换为同等数量的字符,以保证文件名在目录中是唯一的。
你可以创建多个临时文件,并确保每个文件名都不重复:

$ mktemp testing.XXXXXX
testing.1DRLuV
$ mktemp testing.XXXXXX
testing.lVBtkW
$ mktemp testing.XXXXXX
testing.PgqNKG
$ ls -l testing*
-rw------- 1 rich rich 0 Jun 20 21:57 testing.1DRLuV
-rw------- 1 rich rich 0 Jun 20 21:57 testing.PgqNKG
-rw------- 1 rich rich 0 Jun 20 21:30 testing.UfIi13
-rw------- 1 rich rich 0 Jun 20 21:57 testing.lVBtkW
$

3.如你所见,mktemp 命令的输出正是它所创建的文件名。在脚本中使用 mktemp 命令时
可以将文件名保存到变量中,这样就能在随后的脚本中引用了:

$ cat test19
#!/bin/bash
# creating and using a temp file
tempfile=$(mktemp test19.XXXXXX)
exec 3>$tempfile
echo "This script writes to temp file $tempfile"
echo "This is the first line" >&3
echo "This is the second line." >&3
echo "This is the last line." >&3
exec 3>&-
echo "Done creating temp file. The contents are:"
cat $tempfile
rm -f $tempfile 2> /dev/null
$ ./test19
This script writes to temp file test19.vCHoya
Done creating temp file. The contents are:
This is the first line
This is the second line.
This is the last line.
$ ls -al test19*
-rwxr--r-- 1 rich rich 356 Jun 20 22:03 test19
$


该脚本使用 mktemp 命令创建了临时文件并将文件名赋给了$tempfile 变量。接下来将这
个临时文件作为文件描述符 3 的输出重定向文件。将临时文件名显示在 STDOUT 之后,向临时文件
中写入了几行文本,然后关闭了文件描述符。最后,显示临时文件的内容,用 rm 命令将其删除。


4.在/tmp 目录中创建临时文件
-t 选项会强制 mktemp 命令在系统的临时目录中创建文件。
在使用这个特性时,mktemp命令会返回所创建的临时文件的完整路径名,而不只是文件名:

$ mktemp -t test.XXXXXX 
/tmp/test.xG3374 
$ ls -al /tmp/test* 
-rw------- 1 rich rich 0 2020-06-20 18:41 /tmp/test.xG3374 
$ 

由于 mktemp 命令会返回临时文件的完整路径名,因此可以在文件系统的任何位置引用该临时文件:

$ cat test20 
#!/bin/bash 
# creating a temp file in /tmp 
tempfile=$(mktemp -t tmp.XXXXXX) 
echo "This is a test file." > $tempfile 
echo "This is the second line of the test." >> $tempfile 
echo "The temp file is located at: $tempfile" 
cat $tempfile 
rm -f $tempfile 
$ ./test20 
The temp file is located at: /tmp/tmp.Ma3390 
This is a test file. 
This is the second line of the test. 
$ 


在创建临时文件时,mktemp 会将全路径名返回给环境变量。这样就能在任何命令中使用该值来引用临时文件了


7.创建临时目录
-d 选项会告诉 mktemp 命令创建一个临时目录。你可以根据需要使用该目录,比如在其中
创建其他的临时文件:

$ cat test21 
#!/bin/bash 
# using a temporary directory 
tempdir=$(mktemp -d dir.XXXXXX) 
cd $tempdir 
tempfile1=$(mktemp temp.XXXXXX) 
tempfile2=$(mktemp temp.XXXXXX) 
exec 7> $tempfile1 
exec 8> $tempfile2 
echo "Sending data to directory $tempdir" 
echo "This is a test line of data for $tempfile1" >&7 
echo "This is a test line of data for $tempfile2" >&8 
$ ./test21 
Sending data to directory dir.ouT8S8 
$ ls -al 
total 72 
drwxr-xr-x 3 rich rich 4096 Jun 21 22:20 ./ 
drwxr-xr-x 9 rich rich 4096 Jun 21 09:44 ../ 
drwx------ 2 rich rich 4096 Jun 21 22:20 dir.ouT8S8/ 
-rwxr--r-- 1 rich rich 338 Jun 21 22:20 test21 
$ cd dir.ouT8S8 
[dir.ouT8S8]$ ls -al 
total 16 
drwx------ 2 rich rich 4096 Jun 21 22:20 ./ 
drwxr-xr-x 3 rich rich 4096 Jun 21 22:20 ../ 
-rw------- 1 rich rich 44 Jun 21 22:20 temp.N5F3O6 
-rw------- 1 rich rich 44 Jun 21 22:20 temp.SQslb7 
[dir.ouT8S8]$ cat temp.N5F3O6 
This is a test line of data for temp.N5F3O6 
[dir.ouT8S8]$ cat temp.SQslb7 
This is a test line of data for temp.SQslb7 
[dir.ouT8S8]$ 

这段脚本在当前目录中创建了一个临时目录,然后使用 cd 命令进入该目录,在其中创建了两个临时文件。
这两个临时文件又被分配给了文件描述符以用来保存脚本的输出文章来源地址https://www.toymoban.com/news/detail-728609.html

到了这里,关于shell_60.Linux使用临时文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Linux系统(服务器)使用阿里云盘服务快速上传下载文件

    使用集群服务器的时候,尤其是当服务器有多个节点时有些复杂,连接集群我们一般用xshell,传输文件我们一般使用Xftp,一般对于单个节点服务器来说是方便的,使用Xftp还可以可视化本地和服务器端的文件,但当有多个节点时,这就不适用了,他不能选择节点,有局限,连接

    2024年02月04日
    浏览(39)
  • Windows使用Notepad++编辑Linux服务器的文件

    🚀 Windows使用Notepad++编辑Linux服务器的文件 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发

    2024年02月15日
    浏览(38)
  • Shell脚本常用命令及如何通过shell脚本实现服务器上文件的上传和下载

    Shell脚本常用命令 简介 1、什么是shell: Shell 是一个用 C 语言编写的应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 脚本(shell script),是一种为 shell 编写的脚本程序,扩展名为.sh。 2、如何编写shell脚本: 文本编辑器(可以使用

    2024年02月03日
    浏览(54)
  • 使用 Rust 实现连接远程 Linux 服务器、发送文件、执行命令

    Rust 已经听了无数遍,我很清楚它很强!但我也刚了解到它比较难学!那么加上 ChatGPT 呢?下面的代码就是在 ChatGPT 加持下写出来的,我只起到了辅助作用!只能说它们都很厉害! Rust(又称为 Rust programming language)是一种系统编程语言,主要用于开发底层系统和应用程序,如

    2024年02月13日
    浏览(55)
  • 【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

    业务场景:该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 连上服务器后,在任意位置都可以执行: crontab -e 如果没有进入 编辑cron任务模式 根据提示查看我们的服务器上是否未安装crontab没有则

    2024年02月14日
    浏览(49)
  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(48)
  • shell 脚本统计 http 文件服务器下指定目录及其子目录下所有文件的大小

    shell脚本如下: 首先 vi calculate_size.sh 写入下入内容 执行 sh calculate_size.sh http://example.com/some/dir/ 即可统计 http 文件服务器http://example.com/some/dir/ 中 dir 目录及其子目录下所有文件的大小。

    2024年02月15日
    浏览(47)
  • Tauri 提供界面 + 使用 Rust 实现连接远程 Linux 服务器、发送文件、执行命令

    Tauri 是一个用于构建跨平台桌面应用程序的工具和框架。它的目标是通过将 Web 技术与本地功能结合,使开发者能够以简单、高效的方式创建现代的桌面应用。 以下是 Tauri 的一些主要特点和概述: 跨平台支持 :Tauri 允许你构建跨平台的桌面应用程序,它支持 Windows、macOS 和

    2024年02月15日
    浏览(38)
  • Java利用JSCH库远程连接Linux服务器以及操作多条Shell命令

    为了实现 DHCP 服务器的 IP 存储、回收和查询机制,我们需要将服务器中 LXD 容器的网卡 IP 查询出来,并且存储到服务器中的 Mysql 中。所以,下面介绍如何通过 Java 远程连接 Linux 服务器以及操作多条 Shell 命令。 创建 Maven 项目,导入依赖 jsch 实现远程连接,往后我们只需要调

    2024年02月13日
    浏览(41)
  • Linux 清理磁盘空间&使用du指令排查服务器磁盘占用过大的文件

    命令:df -h 参数说明: -a:列出所有的文件系统,包括系统特有的/proc等文件系统 -k:以KB的容器显示各文件系统 -m:以MB的容量显示各文件系统 -h:以人们较易阅读的GB,MB,KB等格式自行显示 -H:以 M=1000K代替M=1024K的进位方式 -T:连同该分区的文件系统名称(例如ext3)也列出

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包