Linux脚本扩展
《Linux脚本基础扩展》
在之前的!《Linuxshell脚本基础知识》中,介绍了编写脚本的基础语法知识;现根据B站教程,对脚本编写实践部分进行总结;
1. 编写脚本,遍历目录下的所有txt文件,且将文件做备份,备份的格式为源文件名后缀增加日期;如:a.txt备份为a.txt_20230122
#!bin/bash #author: zhangsan #version: 1.0.0 #date: 2023-09-29 # 定义后缀,反引号获取命令的执行结果 # 使用$()也可以获取命令执行的结果 $(date +%Y%m%d) suffix=`date +%Y%m%d` # find file for f in `find ./data/ -type f -name "*.txt"` do echo "Back up file $f" cp ${f} ${f}_${suffix} done
代码执行结果:


知识点:
date
命令的用法,获取日期与时间for
循环遍历文件
2. 创建10个用户,并且为每个用户设置随机的密码,将用户名和密码记录到一个文件内
#!bin/bash #author: zhangsan #version: 1.0.0 #date: 2023-09-29 userData=/tmp/userinfo.txt # 判断文件是否存在 if [ -f $userData ] ; then echo "Remove file $userData" rm -f $userData fi # mkpasswd if ! which mkpasswd ; then echo "command mkpasswd not exist, now start install." # apt-get install expect fi # 使用seq产生序列 for i in `seq -w 0 09` do p=`date +%Y%m%d` echo "user_${i} password:${p}" >> /tmp/userinfo.txt done
执行结果:
知识点:
- seq 用于生成序列,可指定序列的起始终止,以及步长, -w参数表示生成等宽序列(Filled by leading zero)
seq 1 5
,seq 1 2 10
,seq -w 1 10
3. 编写脚本,检测本机的所有磁盘分区读写是否都正常
思路:Linux下,通过挂载机制将硬盘分区与文件目录联系起来;
- Windows: 先分物理地址,再在分区上建立目录
- Linux: 先有目录,再将物理地址映射到目录

为了检测所有分区读写是否正常,只需遍历系统中所有挂载点,检测挂载点是否正常即可;检测的方法为,如果可以在挂载点创建和删除测试文件,如果创建删除正常,则表示挂载点正常。
#!bin/bash #author: zhangsan #version: 1.0.0 #date: 2023-09-29 # 遍历系统中的文件挂载点 for mount_p in `df | sed '1d' | grep -v 'tmpfs' | awk '{print $NF}'` do echo Testing mount point ${mount_p} # 创建且删除文件 sudo touch ${mount_p}/testfile && sudo rm -f ${mount_p}/testfile if [ $? -ne 0 ] ; then echo \"${mount_p}\" mount point has IO error. else echo \"${mount_p}\" mount point is normal. fi done
输出结果:

4. 编写脚本,检查指定目录下的所有文件和目录,是否满足特定条件
例如需要满足以下条件:
- 所有文件权限为644
- 所有目录权限为755
- 文件和目录的所有者为指定人
- 文件和目录的所属组为指定组
如果不满上述条件,需要修改权限使其满足
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)