shell脚本学习总结

看完了书《shell脚本学习指南》,顺便总结一下:

看了整本书,全部都是命令,但也确实很难记得命令的选项,所以学习方法就变了。

学习嘛,要考虑到遗忘的可能,既然会忘,还不如不去记,能做的就是但用到的时候再去学,那么现在学习的目的就是为了缩短以后用到时再去学习的学习时间,所以现在所应该学的,是将书本上的命令记住,选项则查手册页(man),也需要记住一些常用的选项,现在要做的就是熟悉手册页,懂得标准化,命令是在不断升级的,手册页才是包含了最全部的命令的参考,没人会规定你在linux系统行输入命令行时,不准查看手册页,不过看英文确实是件痛苦的事。第二,就是猜测,比如在使用过程中,碰到一个应用,好像没学过,这是要猜测其最可能会作为哪条命令的选项出现的,然后去查对应的手册,学完shell脚本这本书,最多也就熟悉这些命令的大概50%的选项,其他不熟悉的选项肯定要猜测和查手册的。

每个人的记忆力有所不同,最少应该记住每个命令是做什么的,最大是记住命令的每个选项。

学完shell脚本要将shell脚本当做一个程序来看到,而不仅仅只是一个脚本,作为程序是可以被进程内exec函数族调用执行的,这样脚本和C语言就互通了,可以相互调用。

shell脚本作为程序,要有完备的选项处理机制(case,getopts),信号处理机制(trap),输入和输出接口(read,printf),shell的执行环境(环境变量处理),shell的安全性考虑。

进行全局性的考虑之后,才能进入具体的内部设计。

shell内部最难理解的,也最容易让人犯错的,应该是引用,双引号引用,单引号引用,不带引号的引用,搞清楚shell的内部执行机理还是非常重要的

理解清楚此图,就算理解shell的运行机理了,双引号内部只做变量替换、命令替换、算术表达式替换,单引号内部则什么也不做,不带引号的还要进行token分割,波浪号展开,通配符展开,看到这个图就应该能明白awk的程序部分为什么加单引号了,sed的命令部分为什么加单引号了,为什么有些命令要加eval重新执行一遍了。

另外,碰到不懂shell内部执行情况的,可以使用trace类(strace)的命令跟踪一下系统调用:strace -f sh 这样启动一个shell,在此shell内执行你不理解的命令,并跟踪子进程的所有系统调用的执行情况,这个碰到问题时的一个解决办法。

sort,sed,awk,find,正则,这几个是必须要熟练使用的,尤其是awk中的关联数组,就是散列表,C++中的关联对象,处理字符串是极其方便的。

最后,我不得不说,shell的启动,会调用两个脚本文件:

test -r /etc/profile  && .  /etc/profile

test -r $HOME/.profile  &&  . $HOME/.profile

我在工作中就碰到过需要定制不同的shell启动情况的,可以修改$HOME/.profile

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值