Chinaunix首页 | 论坛 | 博客
  • 博客访问: 603058
  • 博文数量: 204
  • 博客积分: 5172
  • 博客等级: 上校
  • 技术积分: 2092
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-08 21:48
个人简介

一个毫无毅力之人的自勉

文章分类

全部博文(204)

文章存档

2014年(1)

2013年(54)

2012年(50)

2011年(94)

2010年(3)

2009年(3)

分类: LINUX

2011-09-10 11:53:07

常用易忘点:

常用系统变量
$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
阅读(1373) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~