因为经常会用到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
#!/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脚本,分别是用于备份文件、重命名文件和删除指定文件的脚本,适合初学者参考和实践。 1. 备份文件的脚本: ```bash #!/bin/bash E_BADARGS=65 case $# in 0) echo "message:param ...
这些改变可以包括文件或目录的创建、删除、重命名以及属性修改等操作。 `SHChangeNotifyRegister`函数用于注册一个窗口句柄或线程ID,当文件系统发生变化时,Windows Shell会通过发送`WM_SHNOTIFY`消息到指定的窗口...
本段文字介绍了一个使用VBScript (VBS) 语言编写的脚本程序,旨在批量重命名文件,并在进行文件重命名操作之前对原有文件进行备份。以下是对该段文字中的关键知识点的详细解读。 ### 知识点一:VBScript的作用与...
在`Shell`中,可以使用`mv`命令来重命名或移动文件。例如,将所有".txt"扩展名的文件更改为".log": ```bash for file in *.txt; do mv "$file" "${file%.txt}.log"; done ``` 然后,将这些文件移动到指定目录: ```...
例如,"MoveFile"用于重命名或移动文件,"CreateFolder"用于新建目录,"DeleteFile"和"DeleteFolder"则用于删除文件和目录。同时,VB还可以通过订阅Shell Change Notifications事件来检测更广泛的系统变化,如"改变...
- `mv`:移动或重命名文件或目录。 - `grep`:在文件或输出中搜索特定文本。 - `find`:在文件系统中查找文件。 - `cat`:显示文件内容。 - `man`:查看命令的手册页。 4. **Shell编程**:Shell脚本是用Shell...
- `mv`: 移动文件或目录,也可以用来重命名文件。 #### 文件操作命令 - `cat`: 显示文本文件内容。 - `more`: 分页显示文本文件内容。 - `less`: 类似于`more`,但提供了更多的导航功能。 - `grep`: 在文件中搜索...
首先,了解基本的Unix命令是使用Shell的基础,例如`ls`用于列出目录内容,`cd`用于切换目录,`pwd`显示当前工作目录,`touch`创建或修改文件时间戳,`rm`删除文件,`mv`移动或重命名文件,以及`cp`复制文件。...
通过编写Shell脚本,用户可以自动化执行一系列复杂任务,比如文件备份、系统维护、数据处理等。例如: ```bash #!/bin/bash # 这是一个简单的Shell脚本示例 # 定义变量 filename="example.txt" # 判断文件是否存在 ...
7. **mv**:移动或重命名文件或目录。 8. **touch**:创建新文件或更新文件时间戳。 9. **cat**:查看或合并文件内容。 10. **more** 和 **less**:分页查看文件内容。 11. **find**:在文件系统中查找文件。 12. **...
1. **文件和目录操作**:例如,创建、删除、移动、重命名文件或目录的脚本,这涉及到`touch`, `rm`, `mv`, `cp`, `mkdir`, `rmdir`等命令。 2. **条件语句和循环**:如`if...else`结构用于基于特定条件执行不同任务...
- **文件操作**:如`ls`列出目录内容,`cd`切换目录,`touch`创建新文件,`rm`删除文件或目录,`cp`复制文件,`mv`移动或重命名文件。 - **管道与重定向**:`|`用于将一个命令的输出作为另一个命令的输入,`>`和`...
6. `mv`:移动或重命名文件或目录。 7. `grep`:在文件中搜索特定模式。 8. `find`:查找满足特定条件的文件。 9. `cat`:查看或连接文件内容。 10. `vi/vim`:文本编辑器,用于创建和编辑文件。 在...
文件操作命令涉及查看、拷贝、比较、重命名和删除文件。目录操作则包括创建、查看、删除子目录以及展示目录结构。此外,还有输入输出重定向、管道连接、过滤命令和批命令等功能,它们使得用户可以灵活地控制数据流向...
如`ls`用于列出目录内容,`cd`用于切换目录,`pwd`显示当前工作目录,`touch`创建新文件,`mkdir`创建新目录,`rm`删除文件或目录,`cp`复制文件或目录,`mv`移动或重命名文件和目录。这些都是进行日常文件管理的...
* `mv` 命令:用于移动或重命名文件或目录。 Korn Shell 的高级功能: * 命令history:Korn Shell 可以记录用户输入的命令,并可以使用 `history` 命令来查看和重复执行这些命令。 * 命令编辑:Korn Shell 支持...
Unix系统中包含大量命令,如`ls`列出目录内容,`cp`复制文件,`mv`移动或重命名文件,`rm`删除文件,`mkdir`创建目录,`cd`改变目录,`cat`查看文件内容,`more`或`less`分页查看文件,`grep`搜索文件中的特定模式。...