常用易忘点:
常用系统变量
$0 当前程式的名称
$n 当前程式的第n个参数,n=1,2,…9
$* 当前程式的任何参数(不包括程式本身)
$@ 当前程式的任何参数(不包括程式本身)
$# 当前程式的参数个数(不包括程式本身)
$$ 当前程式的PID
$! 执行上一个指令的PID(似乎不行?)
$? 执行上一个指令的返回值
条件判断:expression为字符串操作
-n str 字符串str是否不为空
-z str 字符串str是否为空
str1 =str2 str1是否和str2相同
str1!=str2 str1是否和str2不同
条件判断:expression为整数操作
expr1 -a expr2 假如 expr1 和 expr2 评估为真,则为真
expr1 -o expr2 假如 expr1 或 expr2 评估为真,则为真
条件判断:expression为bool操作
int1 -eq int2 假如int1等于int2,则为真
int1 -ge int2 假如int1大于或等于int2,则为真
int1 -gt int2 假如int1大于int2 ,则为真
int1 -le int2 假如int1小于或等于int2 ,则为真
int1 -lt int2 假如int1小于int2 ,则为真
int1 -ne int2 假如int1不等于int2 ,则为真
条件判断:expression为文档操作
-b 是否块文档 -p 文档是否为一个命名管道
-c 是否字符文档 -r 文档是否可读
-d 是否一个目录 -s 文档的长度是否不为零
-e 文档是否存在 -S 是否为套接字文档
-f 是否普通文档 -x 文档是否可执行,则为真
-g 是否配置了文档的 SGID 位 -u 是否配置了文档的 SUID 位
-G 文档是否存在且归该组任何 -w 文档是否可写,则为真
-k 文档是否配置了的粘贴位 -t fd fd 是否是个和终端相连的打开的文档描述符(fd 默认为 1)
-O 文档是否存在且归该用户任何
/*----------------------------------------------------------------*/
对于咱chinaunix的技术征文比赛一直很关注,心动已久,忍不住也写一篇!
其实我也是从今年5月份由于项目需要才开始关注到shell的,当然也是看着《高级bash脚本编程指南》进行学习的。到现在为止,也就是个初级水平,如果我有不正确的地方,还请指正。
在这里,我边学边整理了一个脚本,暂且叫做《learning shell by shell
script》(以下简称lsbss),英文不好,所以脚本里用了较多中文(还好shell对中文的支持不错^.^)。我把主要的章节按照自己的理解浓缩了一下,封装成一个一个的函数。我觉得《高级bash脚本编程指南》是一本大而全的书,我把它的电子版放到了桌面上,当手册使用,随时查阅。而我的
lsbss却是小而不精(水平确实有限),我是根据自己对《指南》的理解,尽量用最小的例子来说明shell主干性质的知识。有点儿像中国的水墨画的味道
(请原谅,无意污蔑之^.^),意到了即可。
用shell脚本来学习shell,这是我的本意,要不怎么能叫lsbss呢!既然做成shell脚本,那自然就有脚本的好处了。
1.lsbss可以生成shell脚本
学编程,特别是学shell编程,那就得动手,就得把代码改过来改过去,要不怎么能学得会呢?lsbss把多个脚本以函数的形式备份到了lsbss.sh文件中。只要lsbss在,lsbss生成的脚本任你改来改去。
2.lsbss可以扩展Linux命令
可以把你想要的功能也以lsbss的形式做到脚本里,然后把source /xx/xx/lsbss.sh命令放到~/.bashrc的最后面。这样就可以用你写的函数名当命令执行,也可以像Linux命令一样传参数。
3.lsbss方便扩展和备份
shell编程有个特点,细节特别多,如果不经常用的话,很容易忘记。lsbss也算一个小小的idea:如果你对lsbss有一定了解,你就会发现,把
自己平时容易疏忽的或新学习到的知识点也放到lsbss里,将是一个很不错的主意(由于本人能力有限,所以我的lsbss还仅是个入门级别的,希望大家都
能写出自己的“lsbss“)。
4.为了增加shell脚本的趣味性,我在脚本里加入了几个“埋伏”。当然我也不是为了埋伏而埋伏,是为了说明问题而加的埋伏。
可能大家还是不太明白我所说的意思,但是看看下面的介绍和我的脚本就明白了
1.下载lsbss.sh.txt脚本。由于咱chinaunix的附件对格式有要求,我就用txt格式上传了,下载后改改名字即可。(我的火狐好像只能看,不能下,IE可以下)
2.在终端下,到lsbss脚本所在目录下执行source lsbss.sh
3.在终端下,执行lsbss_help命令,就会看到如下:
4.以re_1为例,在终端里执行命令lsbss_filter re_1,就会在当前目录下生成re_1.sh脚本文件,如下:
如果输错则会:
查看当前目录:
查看re_1.sh内容:
5.此时你可以对re_1.sh“为所欲为”了。
6.如果你仅仅是像看看效果,不想形成re_1.sh的脚本,在终端里执行re_1即可,效果同./re_1.sh
7.如果当前目录脚本太乱太多了,可以在终端执行lsbss_clean来清楚多余的sh脚本
lsbss.sh.txt 在线浏览此文件可能有乱码现象,下载后,在linux下面就好了。
另:我的环境为ubuntu 11.04
阅读(1415) | 评论(0) | 转发(0) |