设为首页 收藏本站
查看: 1073|回复: 0

那些年我们一起追过的Shell Script

[复制链接]

尚未签到

发表于 2015-4-28 10:54:05 | 显示全部楼层 |阅读模式
  原本这是自己在几个月前为公司的一个分享活动写的一个投影片,今天趁大脑负荷比较小,把这个话题拿到blog上面来分享一下。从知道shell算起至今也就几个年头而已,如今勉强算是入门了。对某一个新事物的掌握总是一个循序渐近的过程,只是根据不一样事物的特点,其学习的曲线也不尽一致。shell script算是一门古老的脚本语言,最初始于UNIX/LINUX的系统管理中,用户透过shell可以将自己的命令传递给系统的内核,当系统完成你的命令后返回执行的结果给用户,所以shell最初意义上被定义为用户的操作系统的一个交互界面。当用户总是执行一连串重复的命令的时候,便思考能不能将这些重复的命令按照一定的格式组织在一个文本里面,然后每一次通过去解释执行这样的文本来实现一连串的命令,于是shell script便应运而生。这便是计算机早期的批次处理的工作方式,如同Windows下面的batch(当然名字叫batch的程序并非一行行的去执行,其实他和shell script一样具有脚本语言的语法,只是要简单和生硬得多而已)。
  上面说到shell script的学习曲线,我个人觉得前期的一些背景知识的学习是必不可少的,所以在学习的初期可能给你带来一定的困难,当你一旦掌握了其原理和拥有了一点实际的经验,那么你就会觉得简单多了,但是你要想成为像那些Linux脚本天才一样,能够将它运用到极限,那不言而喻。对于一个嵌入式、Linux/Unix程序员或者计算机系统管理员,shell script总是一门必须课程,所以我们应该趁早学习,免得许多年后你发现shell script的强大时候才感觉“相见恨晚”。我们应该如何学起呢? 不像其他的高级语言,如C Languge,他们总是具有很好的跨平台性,无论是你使用Windows,还是使用Linux,或者是Mac OS,你都可以很容易的获取开发环境进行开发。shell script和Unix/Linux与生俱来,所以你要学习前总不可能避免的回去学习Linux。或许你是一个被MS windows毒害至深的TX,根本没听过Linux,抑或仅仅听过Linux,又或者是用过但是觉得超级难用… 诸如此类,都要克服人的惰性去学习,人总是习惯自己习惯的事物,改变自己习惯的习惯总是很难,而且还对违背自己习惯的事物非常的抵制。这里并不是比较Windows vs Linux,这是一个没有结论的争论。所以劝导大家在习惯自己习惯之前先养成一个好的习惯。
     前面有关无关的话讲了许多,接下来简单介绍一下shell script,shell script你可以认为他就是一门高级的脚本语言,shell就是他的解释执行器,然后许许多多的系统自带的命令你可以想象成为是标准函数库。对于解释器,在大多数的posix系统里面都将Bash作为默认的shell,所以这里的shell script的语法也默指Bash的语法规则。Bash,你在大多数的Linux或者Unix 发行版中都应该可以找到,而且你一样可以从Windows下面的Unix Like环境Cygwin下面打开。然后shell script的语法部分内容都在我的投影片里面有讲述,后面会给出投影片的位置。下面分享一个简单的shell script实例:
      大部分的程序员估计都会使用SVN作为版本控制工具(或许一些老顽固还在使用VSS,或许我自己out,大部分都在使用Git了),那在TortoiseSVN 1.7之前你总有为工程目录下面到处都是.svn的目录而苦恼过,或许你早已经google了一些小的tool可以解决这个问题,但是我这里想介绍的是通过shell script也很容易实现诸如此类的需求:  

#!/bin/bash
CleanSVN () {
FILES=`ls -a`;
for FILE in $FILES
do
if [ -d $FILE ]; then
if [ "$FILE" = ".svn" ]; then
dir=`pwd`;
echo "$dir/$FILE";
rm -rf $FILE;
elif [ "$FILE" != "." ] && [ "$FILE" != ".." ]; then
cd $FILE;
CleanSVN;
cd ..;
fi
fi
done
}
CleanSVN;
  下载:shell script introduce.pdf @ GitHub

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61497-1-1.html 上篇帖子: shell中不可不知的叹号 下篇帖子: X皮书之shell实战开发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表