Linux中大多数命令只做一件事,因此,通过Shell脚本语言把各种程序粘合起来使用时,就能完成复杂的任务。本文充分利用功能强大,但简单易学的小工具,给出一些实际问题的解决方案,希望使Linux更实用、更好用。
让命令“说话”
几乎每个Linux命令都有很多选项,允许使用者根据需要灵活地定制。但这给初学者带来诸多不便,一是学起来麻烦,二是容易遗忘,需要时不得不重新再来。
那么有没有办法让命令自己“说话”呢?通过Shell脚本语言可以给命令加上友好的“面孔”。示例如下:
::::::::::::::cname.sh::::::::::::::echo "Please input file name:"read oldecho "Please input new name: "read newmv $old $new
上面代码中,mv的命令格式为:
mv 原名字 新名字
echo命令格式为:
echo 字符串
read从标准输入中读入一个字符串,并存入后边的变量中,其命令格式为:
read 变量名
程序执行时显示帮助信息,提示输入相应的参数,最后通过简单的变量替换,完成改名任务这个程序。虽然只有5行,却改变了命令的行为方式,大大地增强了mv的易用性。在实际应用中,读者可根据需要替换这个小程序的命令。
处理多个文件
在前面的基础上,如果想给一批文件改名的话,那么下面这个例子就更有实用价值了。
::::::::::::::mvs.sh::::::::::::::for s in $*; do
echo "File: $s"
echo "Please input new name: "
read t
mv $s $t
if [ $? -eq 0 ]; then
echo "OK!^o^"
else
echo "Error!"
fidone
通过for循环,“命令序列”依次处理文件列表中的所有文件。$*代表所有命令行参数,这样文件列表就可以通过命令参数指定。后面的if语句测试命令的执行状态,0代表执行成功。简单部署1之后,键入“mvs .jpg”就可以轻松地批量给文件改名了。
部署方案
程序编制完成,需要仔细部署,以使安装和使用方便。
◆在用户主目录下新建bin目录(如果已建立就跳过):
mkdir ~/bin
◆把~/bin添加到PATH变量,在用户主目录下的.bashrc文件中添加下面几行:
PATH=~/bin:$PATH
export PATH
◆把测试好的程序移至bin目录,更改成简单易记的名字,并设置文件属性:
cp mvs.sh ~/bin/mvs
chmod 755 ~/bin/mvs
以后,就可以直接使用mvs给一批文件改名字了。
mvs *.jpg
本文所举例子虽然简单,但勾画出了一些比较通用的框架,根据需要稍加修改就可以解决很多比较复杂的任务。