因为经常会用到shell脚本,所以经常会写一些,但是我从来没有系统的学习过shell脚本,遇到问题,就去看手册,或者google一下,到了一定的程度才发现自己的基础真的好差。下面在系统学习shell时,顺便写了点有用的小脚本。
1,备份目录下面文件
#!/bin/bash E_BADARGS=65 case $# in //$#表示转入参数的个数,sh bak.sh ./ .sh 有二个参数./和.sh 0) // 参数为空时,提示错误,并且退出 echo "message:param is wrong" exit $E_BADARGS;; esac string=" " cd $1 //进入传入的目录 //备份子目录中的文件时,参数也要接上 if [ $# -gt "1" ] then string=$string" "$2 fi for filename in * //读取当前目录中的文件 do if [ -d "$filename" ] //判断一下是不是目录 then /bin/sh /home/zhangy/test/$0 $(pwd)/$filename $string //是目录的话,进行递归 else if [ $# -gt "1" ] && [ ${filename:(-${#2})} = $2 ] //指定备份什么样的文件 then cp $filename $filename"bak" fi if [ $# -eq "1" ] then cp $filename $filename"bak" //没指定,备份目录下面的所有文件 fi fi done exit 0
[zhangy@BlackGhost test]$ sh bak.sh ./ .sh 这句话的意思是把当前目录(以及子目录)中的所有以.sh为后缀的文件,进行备份、
2,重命名文件
#!/bin/bash E_BADARGS=65 case $# in 0|1|2) echo "message:param is wrong" exit $E_BADARGS;; esac string=" " cd $1 if [ $# -gt "2" ] then string=$string" "$2" "$3 fi for filename in * do if [ -d "$filename" ] then /bin/sh /home/zhangy/test/$0 $(pwd)/$filename $string else if [ $# -gt "2" ] && [ ${filename:(-${#2})} = $2 ] then mv $filename ${filename%$2}$3 fi fi done exit 0
[zhangy@BlackGhost test]$ sh rename.sh /home/zhangy/test .php .html 这句话的意思是说,把当前目录(包括子目录)下的所有以.php为后缀的文件,重命名为.html
3,删除指定文件
#!/bin/bash E_BADARGS=65 case $# in 0|1) echo "message:param is wrong" exit $E_BADARGS;; esac string=" " cd $1 if [ $# -gt "1" ] then string=$string" "$2 fi for filename in * do if [ -d "$filename" ] then /bin/sh /home/zhangy/test/$0 $(pwd)/$filename $string else if [ $# -gt "1" ] && [ ${filename:(-${#2})} = $2 ] then rm -f $filename fi fi done exit 0
[zhangy@BlackGhost test]$ sh del.sh /home/zhangy/test .log 删除/home/zhangy/test,以及子目录下所有以.log为后缀的文件
4,小结
通过上面例子的练习,总结有以下几点
1,传参数到shell脚本,一般传参数可以通过url或者是form表单,像这样 index.php?name=tank,但是shell不能这样,他传参数直接根shell脚本的后面,像这样rename.sh /home/zhangy/test .php .html 向rename.sh传了3个参数,分别是/home/zhangy/test .php .html
2,case语句,if语句的思想差不多,就是写法不一样,多看看,多练练就会适应了。
3,如果将命令的输出,负值给一个变量,语法是$(shell command) 例如 :$(pwd)显示当前目录
4,变量的截取,变量之间的比较等,上面的例子虽然非常的简单,但是包括的知识点还是不少的。
相关推荐
主要介绍了shell备份文件、重命名文件、删除指定文件的3个脚本分享,是学习shell时的练习脚本,shell新手朋友可以参考下哦
下面的命令会把 Bitmaps 目录和它的子目录中的所有文件添加到 RAR 压缩文件 Pictures.rar 中: rar a Pictures.rar Bitmaps 4) 如果目录包含文件掩码或以反斜线结尾,将会应用普通的规则,你 需要指定 -r 开关...
编译(待补充)目录退出天翼云盘帐号切换云工作模式(个人云/家庭云)签到获取网盘配额切换工作目录输出工作目录列出目录下载文件/目录上传文件/目录备份文件/目录手动秒传文件创建目录删除文件/目录拷贝文件/目录转存...
1.67 rm指令:删除文件或目录 1.68 tac指令:反序输出文件 1.69 tar指令:打包同时压缩/解压缩文件 1.70 tee 指令:从标准输入读取数据到标准输出,同时保存为文件 1.71 tftp指令:传输文件 1.72 tmpwatch指令:删除...
主要功能(多租户管理、多主机管理、web shell功能、文件系统、应用管理、ci/cd 持续集成功能、docker 镜像管理、mysql web 操作控制、 数据备份功能 分为文件 和数据库备份 可以备份到 ftp oss 和mysql 数据库、...
ICACLS 显示、修改、备份或还原文件和 目录的 ACL。 IF 在批处理程序中执行有条件的处理操作。 LABEL 创建、更改或删除磁盘的卷标。 MD 创建一个目录。 MKDIR 创建一个目录。 MKLINK 创建符号链接和硬链接 MODE ...
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux...
2.4.9 mv——移动或重命名文件.22 2.4.10 ln——对文件进行链接.23 2.4.11 rm——删除文件23 2.5 实验24 第3章文件访问权限27 3.1 课程目标.错误!未定义书签。 3.2 谁有权访问文件.27 3.3 访问类型27 3.4 文件权限...
本资源由大量的实用批处理文件组成,删除.txt尾缀名双击即可直接使用,既是学习的模板也可以作为实用程序,如下为文件组成,涉及文件管理,系统,网络,小工具等等: 0-reaname 2000XP停止打印.bat BAT珍藏 dir.bat...
del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同) move 盘符路径要移动的文件名 存放移动文件的路径...
通过 ssh 上的 rsync 将指定目录/文件的快照备份创建到远程服务器中。 基于此处描述的脚本: : ,但该脚本提供了从本地备份到远程的能力。 目的 rsync over ssh 用于通过增量传输算法传输文件,以仅传输文件的最小...
converter 归一化当前目录中的所有音频文件,保存到m4a aac带负号的split_filenames_with 将文件重命名为'20190530T140447.ogg'->'2019-05-30-14-04-47.ogg'dobro-backup.sh 从该存储库下载所有脚本,备份一些其他硬...
Dropbox 同步 从分叉 此脚本现已修改为支持 ... 删除/移动/重命名/复制/列出文件 创建分享链接 安装 $ wget https://code.stats.io/dropbox-sync.sh $ chmod 755 dropbox-sync.sh $ mv dropbox-sync.sh /usr/bin $ echo
您可以浏览设备的内部,如果您是高级用户并且设备已植根,则可以更改系统数据 - 备份文件,删除不需要的应用程序等。 如果您是标准用户,您可以选择隐藏内部存储器,并确保不要弄乱系统。 您可以在设备上轻松查看大...
您可以浏览设备的内部结构,如果您是高级用户并且已扎根设备,则可以更改系统数据-备份文件,删除不需要的应用程序等。 如果您是标准用户,则可以选择从视图中隐藏内部存储器,并确保不要与系统混淆。 您可以...
文件备份器V2.3修改版2.cmd 文件夹伪装.TXT 文件归类整理器 V1.1(子目录版).bat 文件归类整理器 V1.1(指定路径带子目录版).bat 文件归类整理器(当前目录版).bat 文件数目分类统计.cmd 断开网络联结.bat 无限制实数加...
删除当前目录下文件名中包含一些特殊字符(包括空白)的文件.. 12-4. 通过文件的 inode 号来删除文件 12-5. Logfile: 使用 xargs 来监控系统 log 12-6. 把当前目录下的文件拷贝到另一个文件中 12-7. 通过名字Kill进程...
删除当前目录下文件名中包含一些特殊字符(包括空白)的文件.. 12-4. 通过文件的 inode 号来删除文件 12-5. Logfile: 使用 xargs 来监控系统 log 12-6. 把当前目录下的文件拷贝到另一个文件中 12-7. 通过名字Kill ...