红联Linux门户
Linux帮助

让Linux命令加速

发布时间:2006-04-06 00:50:34来源:红联作者:007
Linux中大多数命令只做一件事,因此,通过Shell脚本语言把各种程序粘合起来使用时,就能完成复杂的任务。本文充分利用功能强大,但简单易学的小工具,给出一些实际问题的解决方案,希望使Linux更实用、更好用。

让命令“说话”

几乎每个Linux命令都有很多选项,允许使用者根据需要灵活地定制。但这给初学者带来诸多不便,一是学起来麻烦,二是容易遗忘,需要时不得不重新再来。

那么有没有办法让命令自己“说话”呢?通过Shell脚本语言可以给命令加上友好的“面孔”。示例如下:

引用:
::::::::::::::
cname.sh
::::::::::::::
echo "Please input file name:"
read old
echo "Please input new name: "
read new
mv $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!"
fi
done




通过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

本文所举例子虽然简单,但勾画出了一些比较通用的框架,根据需要稍加修改就可以解决很多比较复杂的任务。
文章评论

共有 0 条评论