脚本工具 mktemp 和 install

1.创建临时文件 mktemp

1.1 介绍

mktemp 命令用于创建并显示临时文件,可避免冲突

使用mktemp命令时,它会根据指定的模板在临时目录(默认为/tmp)中创建一个唯一的临时文件或目录,并返回该文件或目录的完整路径。临时文件或目录的名称会基于模板生成,并且会添加一些随机字符以确保唯一性。

需要注意的是,mktemp命令只会创建临时文件或目录,并不会自动删除它们。如果不再需要这些临时文件或目录,应该手动删除以释放系统资源。

mktemp命令在编写脚本或需要创建临时文件或目录的场景中非常有用,可以确保生成的临时名称是唯一的,避免命名冲突。

1.2 格式:

mktemp [OPTION]... [TEMPLATE]
说明:TEMPLATE: filenameXXXX,X至少要出现三个

1.3 选项:

-d创建一个临时目录而不是临时文件
-p指定临时文件或目录的父目录
-t在生成的文件名或目录名中添加指定的后缀
-u仅显示将要创建的临时文件或目录名,而不实际创建
-q不显示任何输出

1.4 注意事项:

① 模板参数:mktemp 命令的最后一个参数是模板参数,用于指定临时文件或目录的命名规则。模板参数必须包含至少6个连续的X字符,这些字符将被替换为随机生成的字符。例如,/tmp/tmp.XXXXXX是一个有效的模板参数。

② 临时文件和目录:默认情况下,mktemp 命令会创建临时文件。如果想要创建临时目录,可以使用 -d 选项。例如,mktemp -d 会创建一个临时目录。

③ 父目录:如果想要指定临时文件或目录的父目录,可以使用 -p 选项。

例如,mktemp -p /tmp  会在/tmp目录下创建临时文件或目录。

④ 后缀:可以使用 -t 选项来指定生成的临时文件或目录的后缀。

例如,mktemp -t .txt   会在临时文件名或目录名的末尾添加 .txt 后缀。

⑤ 预览模式:使用 -u 选项可以进入预览模式,只显示将要创建的临时文件或目录名,而不实际创建。这对于调试和测试非常有用。

⑥ 错误处理:如果 mktemp 命令无法创建临时文件或目录,会显示错误信息并退出。因此,在使用 mktemp 命令之前,确保目标目录存在且可写。

⑦ 安全性:mktemp 命令会生成随机的临时文件或目录名,以避免命名冲突。这可以防止其他用户或恶意程序对临时文件进行操作。因此,使用 mktemp 命令可以提高系统的安全性。

1.5 底层逻辑:

在 Linux Shell 中,mktemp 命令的底层实现是通过调用C库函数来完成的。具体来说,mktemp 命令使用了一个叫做 mkstemp 的C函数。

mkstemp 函数是一个系统调用,用于创建一个唯一的临时文件。它的实现过程如下:

首先,mkstemp 函数会根据传入的模板参数创建一个临时文件。模板参数必须包含至少6个连续的X字符,这些字符将被替换为随机生成的字符。例如,/tmp/tmp.XXXXXX 是一个有效的模板参数。

接下来,mkstemp 函数会尝试打开临时文件,并返回一个文件描述符。如果打开文件成功,文件描述符将用于后续的读写操作。

在打开文件后,mkstemp 函数会将临时文件的权限设置为安全模式,以确保只有当前用户可以访问该文件。

最后,mkstemp 函数会返回临时文件的文件描述符,供调用者使用。调用者可以使用该文件描述符进行读写操作,完成临时文件的使用。

需要注意的是,mkstemp 函数创建的临时文件是唯一的,它的文件名是随机生成的,以避免命名冲突。这可以提高系统的安全性,防止其他用户或恶意程序对临时文件进行操作。

总结起来,Linux Shell 的 mktemp 命令底层通过调用C库函数 mkstemp 来创建唯一的临时文件,并返回文件描述符供调用者使用。这种实现方式确保了临时文件的安全性和唯一性。

1.6 操作:

① 创建一个临时文件

[root@localhost tmp]#mktemp
/tmp/tmp.OV0vRSDcK5

② 创建一个临时目录

[root@localhost tmp]#mktemp -d
/tmp/tmp.l3tA1JUhb4

③ 自定义模块创建临时文件

[root@localhost tmp]#mktemp xyltemp.XXXXXX

④ 使用自定义模块创建临时目录

[root@localhost tmp]#mktemp -d xyltemp.XXXXXX

⑤ 创建一个临时文件,并在文件名中添加指定前缀

[root@localhost tmp]#mktemp -p /tmp xylprofile.XXXXXX

⑥ 创建一个临时目录,并在目录名中添加指定的后缀

[root@localhost tmp]#mktemp -d  XXXXXX.tmp

1.7 实现文件垃圾箱

#/bin/bashDIR=`mktemp -d /tmp/trash-$(date +%F_%H-%M-%S)XXXXXX`
mv $* $DIR
echo $* is move to $DIRfunction rm () {
local trash=`mktemp -d /tmp/trashXXXX`;mv $*
$trash;
}

2.安装复制文件 install

install 功能相当于cp,chmod,chown,chgrp ,mkdir 等相关工具的集合

1. 命令格式:

install [OPTION]... [-T] 源文件 目标文件  #单文件
install [OPTION]... 源文件... 目录
install [OPTION]... -t 目录  源文件...
install [OPTION]... -d 目录...           #创建空目录

2. 选项:

-mMODE  显示设置权限模式   默认755
-oOWNER  拥有者
-gGROUP  属组
-dDIRNAME  目录
-v创建目录时显示其名称

3. 操作

[root@localhost opt]#install /etc/passwd -m 700 -o lisi -g lisi ./

小问题:

使用 install 先给他加权限,再复制到指定文件夹,之后再给他移过去,覆盖,就可以使用了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年12月CCF-GESP编程能力等级认证Python编程一级真题解析

一、单选题(共15题,共30分) 第1题 某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。( )(2023年12月py一级) A:麦克风 B:扬声器 C…

工作中的小记录

1、在element的el-dialog中上传附件后在另一个el-form-item下的input输入框中获取该附件名 使用v-model无法双向绑定。使用this.$set this.$set(this.formData,"属性名","属性值")2、后端传来文件地址,点击直接下载 getCaseId(this.$route.quer…

datawhale 大模型学习 第十一章-大模型法律篇

简介 新技术与法律关系:大型语言模型(LLM)的出现引发了对现有法律适用性的探讨,尤其是在版权、隐私和公平使用等方面。互联网法律挑战:互联网的匿名性和无国界特性对法律的管辖权提出了挑战。法律与道德区分&#xff…

在线UI设计工具有哪些?这5个包你满意

随着 UI 设计行业的蓬勃发展,越来越多的设计师进入 UI 设计,选择一款方便的 UI 设计工具尤为重要!除了传统的 UI 设计工具,在线 UI 设计工具也受到越来越多设计师的青睐。这种不受时间、地点和计算机配置限制的工作方法真的很刺激…

Python处理图片生成天际线(2024.1.29)

1、天际线简介 天际线(SkyLine)顾名思义就是天空与地面的边界线,人站在不同的高度,会看到不同的景色和地平线,天空与地面建筑物分离的标记线,不得不说,每天抬头仰望天空,相信大家都可…

屈子祠镇黑鱼岭,不可移动文物预防性保护系统守遗珍

一、何止秦俑 秦陵苑囿青铜水禽等文物集中展出 文物保护,尤其是不可移动文物的保护,一直都是文化遗产的重要环节。湖南省汨罗市屈子祠镇双楚村黑鱼岭墓地,作为长江中游地区的重大考古发现,其商朝晚期的历史背景赋予其不可估量的历…

c# 语音播报

在C#中进行语音播报通常需要使用.NET Framework中的某个语音库或服务。一个常见的选择是使用System.Speech.Synthesis命名空间中的SpeechSynthesizer类,该类提供了文本到语音的转换功能。 以下是一个简单的示例,演示如何在C#中使用SpeechSynthesizer进行…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-6 绘制几何图形

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>绘制几何图形</title> </head><body><canvas id"canvas" width"250" height"150" style"border: 1px b…

QUIC with CUBIC or BBR

拥塞控制 拥塞控制算法是 TCP/QUIC 协议的一个基础部分&#xff0c;多年来经过一个个版本的迭代&#xff08;如 Tahoe、Reno、Vegas 等&#xff09;&#xff0c;拥塞控制算法得到了持续的提升。由于篇幅有限&#xff0c;本文就目前比较流行的两种拥塞控制算法&#xff08;CUBI…

SVM支持向量机

1.基本概念 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种有监督学习方法&#xff0c;主要用于分类和回归分析。它的基本思想是在特征空间中找到一个超平面&#xff0c;能够将不同类别的样本分开&#xff0c;并且使得离这个超平面最近的样本…

Linux 链接 GitHub 出现 Connection timed out

问题 安装GIT并完成公钥验证&#xff1a;Linux 系统拉取 Github项目 [rootxxx devtools]# ssh -T gitgithub.com ssh: connect to host github.com port 22: Connection timed out解决方案 进入在存放公钥私钥id_rsa.pub文件里&#xff0c;新建/修改config文本 [rootxxx my…

Java 异常处理下篇:11 个异常处理最佳实践

文章目录 前言最佳实践早抛出&#xff0c;晚捕获原则只捕获实际可处理的异常不要忽略捕捉的异常抛出具体的检查性异常正确包装自定义异常中的异常记录或抛出异常&#xff0c;但不要同时执行finally 中永远不要抛出异常或返回值避免使用异常进行流程控制使用模板方法处理重复的 …

算法训练day24回溯算法理论基础77组合

今日学习链接 https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80 https://programmercarl.com/0077.%E7%BB%84%E5%90%88.html#%E5%89%AA%E6%9E%9D%E4%BC%98%E5%8C%96 回溯算…

sql注入,布尔盲注和时间盲注,无回显

布尔盲注 通过order by分组可以看到&#xff0c;如果正确会i显示you are in&#xff0c;错误则无任何提示&#xff0c;由此可以判断出&#xff0c;目前只显示对错&#xff0c;此外前端不会显示任何数据 也就是说&#xff0c;目前结果只有两种&#xff0c;在这种只有两种变量的…

Uniapp登录页面获取头像、昵称的最新方法的简单使用

前言 写小程序写到登录页面的时候&#xff0c;发现官方文档中原来的wx.getUserInfo和wx.getUserProfile不太能用了&#xff0c;学习了相对比较新的方法&#xff0c;这种方法的文档链接如下&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/framework/open-abil…

交易策略的开发:关于市场到底能不能预测的哲学思考

文章目录 为什么要判断市场能否被预测三个方面来论述这个问题耗散结构理论什么是耗散结构 为什么要判断市场能否被预测 这个问题已经争论几十年了&#xff0c;不仅在股票市场&#xff0c;期货市场&#xff0c;外汇市场, 甚至整个金融市场。至今没有人给出一个科学的论断。 如果…

上位机是什么?与下位机是什么关系

在工业自动化领域中&#xff0c;上位机是一项关键而引人注目的技术。许多人对上位机的概念感到好奇&#xff0c;想要深入了解其在工业智能中的作用。那么&#xff0c;上位机究竟是什么呢&#xff1f; 首先&#xff0c;上位机是一种用于工业控制系统的软件应用&#xff0c;通常…

配置支持 OpenAPI 的 ASP.NET Core 应用

写在前面 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 本文记录如何配置基于Swagger 的 ASP.NET Core 应用程序的 OpenAPI 规范。 需要从NuGet 安装 Swashbuckle.AspNetCore 包 代码实现 var builder WebApplicati…

STM32G4单片机

单片机的基本结构 CPU就是中央处理器&#xff0c;是单片机的内核 时钟电路&#xff0c;时钟源是给整个电路提供时序 其他的外设、中断以及存储器都是通过系统总线与CPU进行连接 RAM相当于电脑的内存条&#xff0c;随机存储器&#xff0c;掉电会丢失 ROM相当于电脑的硬盘&am…

vmstat 监控虚拟内存,进程,CPU

文章目录 1. 命令格式&#xff1a;2. 命令功能&#xff1a;3. 命令参数&#xff1a;4. 使用实例&#xff1a;实例1&#xff1a;显示虚拟内存使用情况实例2&#xff1a;显示活跃和非活跃内存实例3&#xff1a;查看系统已经fork了多少次实例4&#xff1a;查看内存使用的详细信息实…