当前位置: 首页 > news >正文

网站关键词扩展好的网站设计题目

网站关键词扩展,好的网站设计题目,上海松江做网站的公司,wap网站制作教程本篇继续来学习shell脚本#xff0c;对上一篇的文件检查与拷贝脚本进行简化修改。 1 功能说明 在Linux系统中#xff0c;通过一个shell脚本#xff0c;实现将一个目录中的所有文件#xff08;包括子目录中的#xff09;#xff0c;拷贝到顶一个指定的目录#xff0c;要求…本篇继续来学习shell脚本对上一篇的文件检查与拷贝脚本进行简化修改。 1 功能说明 在Linux系统中通过一个shell脚本实现将一个目录中的所有文件包括子目录中的拷贝到顶一个指定的目录要求 在拷贝前先检查两个目录中文件是否一样不一样的才拷贝执行拷贝时打印详细的拷贝信息 2 脚本实现 下面分功能模块来讲解脚本。 2.1 源目录与目标目录 这部分和上次的脚本一样不再详细介绍 2.2 统计源目录的总文件数和总目录数 # 源目录的所有文件 mapfile -t FILES (find $SRC_DIR -type f)解释 find $SRC_DIR -type f在 $SRC_DIR 目录及其子目录下查找所有普通文件并输出它们的路径(find $SRC_DIR -type f)进程替换process substitution将 find 命令的输出作为一个临时文件或管道提供给其他命令使用mapfile -t FILES ...读取文件 mapfile 是一个读取文件内容到数组的命令-t 选项表示去除每行末尾的换行符trim trailing newlineFILES 是要创建的数组变量名 表示从前面的输入源读取数据2.3 对比文件是否一样并拷贝 上篇文章是通过MD5来比较文件是否相同的会比较耗时这次通过cmp指令来比较 copyed_count0 processed_count0# 递归遍历源目录下所有文件 for src_file in ${FILES[]}; do# 计算相对路径rel_path${src_file#$SRC_DIR/}dest_file$DEST_DIR/$rel_path# 创建目标子目录dest_dir$(dirname $dest_file)mkdir -p $dest_dir# 比较文件并执行拷贝if [[ ! -f $dest_file ]] || ! cmp -s $src_file $dest_file; then# 执行复制cp -pv $src_file $dest_file || echo 警告复制 $rel_path 失败echo copy: $rel_path(( copyed_count ))fi(( processed_count ))process$(( (processed_count * 100 TOTAL_FILES - 1) / TOTAL_FILES ))printf \rprocess: [%d/%d] (%d%%) $processed_count $TOTAL_FILES $process doneecho -e \n 操作完成,实际需拷贝 $copyed_count 个文件 2.3.1 遍历每个文件 前面通过mapfile将文件读到了FILES中然后就可以通过for循环来依次处理文件了 for src_file in ${FILES[]}; do#... done解释含义 FILES是数组的名称在之前的 mapfile 命令中这个数组被用来存储文件路径[]是数组的扩展标志作用是展开数组中的所有元素并且每个元素会被视为一个独立的参数${FILES[]}:带双引号时会保留每个元素的原始格式包括元素中包含的空格 2.3.2 计算路径并创建子目录 从源目录文件的完整路径中提取出相对路径然后根据目标位置组成目标文件的路径 # 计算相对路径 rel_path${src_file#$SRC_DIR/} dest_file$DEST_DIR/$rel_path# 创建目标子目录 dest_dir$(dirname $dest_file) mkdir -p $dest_dir解释一下${变量#模式}从变量值的开头开始匹配 “模式”并删除最短的匹配部分 src_file存储着文件的完整路径例如 /home/user/src/docs/readme.txt$SRC_DIR/作为匹配的前缀模式例如 /home/user/src/rel_path 最终得到 docs/readme.txt$DEST_DIR/$rel_path拼接成目标文件的路径例如/home/user/src2/docs/readme.txtdirname 从文件路径中提取其所在的目录部分例如/home/user/src2/docsmkdir -p $dest_dir用于创建目录 mkdir是 “make directory” 的缩写用于创建新目录的基础命令。-p是一个常用选项全称是 “parent”父目录作用是递归创建目录。 当需要创建的目录路径中包含不存在的父目录时-p 会自动创建所有缺失的父目录而不会报错。$dest_dir是要创建的目标目录路径通常是一个变量双引号用于处理路径中包含空格或特殊字符的情况2.3.3 复制文件 # 比较文件并执行拷贝 if [[ ! -f $dest_file ]] || ! cmp -s $src_file $dest_file; then# 执行复制cp -pv $src_file $dest_file || echo 警告复制 $rel_path 失败echo copy: $rel_path(( copyed_count )) fi(( processed_count )) process$(( (processed_count * 100 TOTAL_FILES - 1) / TOTAL_FILES )) printf \rprocess: [%d/%d] (%d%%) $processed_count $TOTAL_FILES $process解释下 [[ ! -f $dest_file ]] 如果目标文件 $dest_file不存在则此部分条件为真 [[ ... ]] 是 Bash 的高级条件判断语法! 表示否定-f 是文件测试运算符用于检查指定路径是否为普通文件 ||逻辑或运算符! cmp -s $src_file $dest_file如果源文件 $src_file 与目标文件 $dest_file 内容不同则此部分条件为真 cmp 是用于比较两个文件内容的命令-s选项表示 “silent”静默模式比较结果不同时不输出具体差异只通过退出状态码表示 若两文件内容完全相同cmp -s 退出状态码为 0表示成功若内容不同退出状态码为非 0表示失败 ! 否定了 cmp -s 的结果3 完整的脚本 #!/bin/bashSRC_DIR./curl-8.15.0 # 源目录路径 DEST_DIR./curl-8.15.0-test2 # 目标目录路径# 确保目录路径不以斜杠结尾避免路径处理问题 SRC_DIR${SRC_DIR%/} DEST_DIR${DEST_DIR%/}# 检查源目录是否存在 if [ ! -d $SRC_DIR ]; thenecho 错误源目录 $SRC_DIR 不存在exit 1 fi# 检查目标目录不存在则创建 if [ ! -d $DEST_DIR ]; thenecho 目标目录 $DEST_DIR 不存在正在创建...mkdir -p $DEST_DIR || { echo 创建目标目录失败; exit 1; } fiecho 源目录: $SRC_DIR echo 目标目录: $DEST_DIR# 统计源目录的总文件数和总目录数 TOTAL_FILES$(find $SRC_DIR -type f | wc -l) TOTAL_DIRS$(find $SRC_DIR -type d | wc -l) # 减去源目录本身 TOTAL_DIRS$((TOTAL_DIRS - 1))echo 源目录总文件数: $TOTAL_FILES echo 源目录总目录数: $TOTAL_DIRS# 源目录的所有文件 mapfile -t FILES (find $SRC_DIR -type f)copyed_count0 processed_count0# 递归遍历源目录下所有文件 for src_file in ${FILES[]}; do# 计算相对路径rel_path${src_file#$SRC_DIR/}dest_file$DEST_DIR/$rel_path# 创建目标子目录dest_dir$(dirname $dest_file)mkdir -p $dest_dir# 比较文件并执行拷贝if [[ ! -f $dest_file ]] || ! cmp -s $src_file $dest_file; then# 执行复制cp -pv $src_file $dest_file || echo 警告复制 $rel_path 失败echo copy: $rel_path(( copyed_count ))fi(( processed_count ))process$(( (processed_count * 100 TOTAL_FILES - 1) / TOTAL_FILES ))printf \rprocess: [%d/%d] (%d%%) $processed_count $TOTAL_FILES $process doneecho -e \n 操作完成,实际需拷贝 $copyed_count 个文件 4 测试结果 这里用curl的源码目录进行测试拷贝一份到curl-8.15.0-test2目录然后删除一些文件进行测试可以看到有检查到两个目录存在不一样的文件在确认拷贝后执行了拷贝。 再次执行脚本可以看到文件都完全一样了 5 总结 本篇通过一个文件检查与拷贝的实例介绍了shell脚本的一些语法并通过实际测试来验证脚本的功能。
http://www.zqtcl.cn/news/118996/

相关文章:

  • 万宁市住房和城乡建设局网站网页游戏制作过程的
  • 网站建设批复意见浏览有关小城镇建设的网站 记录
  • 做国际贸易做什么网站遵义做网站优化
  • 电商平台正在建设中网站页面提示开发手机网站用什么好
  • 电商设计素材网站推荐百度云app下载安装
  • 网站怎样和首页做链接地址百度怎么打广告在首页
  • 眉县做网站网站开发技术可行性分析
  • 深圳求职网站哪个好网站上面的在线咨询是怎么做的
  • 做饰品一般用什么网站做首饰凡客数据
  • 工业电商做网站怎么样wordpress 韩国 主题
  • 网站的优化从几个方面网站建设需注意哪些事项
  • 网站建设的技术有哪些内容东莞网站建设最优
  • 网站建设税费很多网站没有后台
  • 百度云主机上装网站flash怎么做网页
  • 外贸网站能用阿里云吗哔哩哔哩网页版打不开
  • 南宁月嫂网站建设财经直播的网站开发一个多少钱
  • 宁波网站的建设百度网盟推广 网站
  • 大连城乡建设局网站青岛网站建设外贸
  • 石家庄网站建设招聘珠海快速网站建设
  • 网站建设代理ai制作网页
  • 微网站平台怎样做网站wordpress侧栏跟随
  • 手机网站建设好吗湖南省专业建设公司网站的机构
  • 网站代码 字体好用的cms网站
  • 美食网站首页设计用手机怎么看自己做的网站
  • 平台类网站开发怎样做永久网站二维码
  • 网站开发客户挖掘php网站开发心得3500字
  • 检察院做网站的目的青岛网站推广优化
  • dede替换网站模板定制网站建设的流程
  • 天津专业网站制作网站开发模板
  • 做二手车网站需要什么怎样建立门户网站