免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 66449 | 回复: 170

我的shell水平越来越高了--向shell初学者介绍一些学习经验  关闭 [复制链接]

论坛徽章:
0
发表于 2004-04-25 14:16 |显示全部楼层
三个多月前,我开始学习shell编程,当时对shell编程一窍不通,连最基本的变量赋值都一头雾水。经过三个多月的学习和练习,我的shell已经有了一点水平,至少坛子里的很多问题我都知道怎么解决。我想把我学习过程中的一点心得与诸位菜鸟们分享。
       
        首先看些系统地介绍shell编程的书籍,我的手头只有一本《linux 与unix shell编程指南》,我觉得写得实在不怎么样,但是因为手头只有这一本书,只好凑合着用了。实际上,这本书我只翻了翻(因为觉得写得不好,所以没细看)第18章,介绍shell分支和循环流程的,然后自己写个例子,试验shell流程。会了以后,就把这本书扔到一边了。

        然后,我开始在本版潜水,先看了置顶的帖子,发现“十三问”很不错,就copy了下来。然后浏览本版精华区,把我认为有用的文章全部copy下来,预备慢慢看。接着就是细读了“十三问”,把里面的例子在我的环境下面试验。网中人版主水平很高,对shell的研究非常深入透彻,十三问可以解决大部分人对于shell的很多疑问,不管是初学者还是老鸟这篇帖子都很适用。这样,对于shell编程所需要的基本元素我就了解了,可以试着应用了。

        接着,在坛子里面继续潜水,不是发问,而是看看别人提出的初级问题,先不看别人的解答,试着自己先解答,然后把自己的方案贴出去,再与别人的方案比对,寻找差距。别人会对你的方案提出修改和批评意见,虚心接受,在斗争中成长。同时,研究awk的用法,因为我知道awk是shell下面功能最强的一个工具。我的学习资料是本版精华区的“Unix awk使用手册”,这个帖子很好,系统的介绍了awk的用法。

        再接着,因为熟悉了awk,试着用awk解决一些坛子里面提出的问题,发现awk果然好用,但是也有局限性,所以开始学习sed。我的学习资料是本版精华区的“通用线程 -- sed 实例”。对sed有了初步了解后,开始试着用sed解决一些问题。然后又细读了本版精华区的“通过几个例子看sed的模式空间与保持空间”和“sed 学习笔记(与大家共勉)”。两篇帖子通过例子深入的介绍了sed的高级功能,我试着把几乎每一个例子都看懂了,有的实在太复杂,只好先放放。这样,我的sed水平就不低了。
       
        要注意,正则表达式是shell编程很重要的一个内容,它无所不在。在学习awk和sed的过程中,由于它们和正则表达式结合得非常紧密,因此我也慢慢的熟悉了正则表达式。如果要看资料的话,本版精华有一篇“正则表达式语法”和一篇“正则表达式介绍”都是不错的材料。

        至此,由于掌握了shell基本编程、正则表达式和awk、sed的用法,我的shell已经有了一定的水平,接下去是继续提高。提高的方式是继续潜水,给一些问题做出解答,同时研究其它大侠的解决方案。ad版主和r2007版主的水平很高,他们的代码总是十分简洁,研究他们的代码可以得到不少帮助。bjgirl很热心,熟悉的shell命令甚至比几位版主都多,研究她的代码可以学习到一些边边角角的shell命令的用法。还可以研究精华里面一些巧妙的或是复杂的shell例子,比如c1l2d3大侠的五子棋程序等等(那个五子棋让我PF得五体投地)。另外,把潜水过程中发现的一些精巧的解决方案和心得记录下来,比如ad版主提出的如何判断有连续重复字母的单词,r2007版主的洗牌方案等等问题的帖子,写在我的一篇“shell用法心得”笔记里面,有不懂的地方时,把这篇笔记拿出来翻翻,往往可以得到以前类似题目的解决办法。

        在三个多月的学习过程中,我印象中只发贴提问过一次,是关于sed命令序列的执行组合、执行条件、执行顺序的问题。遇到其它不懂的地方时,争取自己解决,这也是我从幼儿园开始一贯的学习作风。只有自己思考,才能更快提高,除非你很懂得提问技巧,否则一味地发贴提问并没有太大的帮助。
       
        希望上面介绍的这些经验对初学者有帮助。

论坛徽章:
0
发表于 2004-04-25 14:50 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

如果所有的初学者都同你一样勤奋就好了,呵呵;
shell版氛围不错,我比较喜欢,solaris版由于太多的初学者不肯看书,几乎每天都有相同的初级问题出现,搞得现在高手不愿解答、新手又解答不了,比较遗憾;

论坛徽章:
0
发表于 2004-04-25 14:58 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

我发表我个人的看法:
(1)我想学习shell的过程是思维转换的过程:
      理由如下:
    ①我想在做的各位有许多是从windows下来的,由于windows与unix之间的本质的不同让我们理解unix/linux存在相当的困难;
    ②由于windows与unix/linux在标准的符合上存在相当的差异(虽然两者之间有相同的标准),windows是图形化界面,而unix却是命令行,这是其二;
(2)shell自身的理解过程:
    ①学习shell编程之前无论是grep,sed,还是大名鼎鼎的awk,首先必须理解的是"正则表达式",该表达式理解的好坏直接关系着你以后的水平的提高;
    ②sed,grep,awk内在的理解问题:其实学习shell编程重要的是理解上面这些工具的执行过程,如:什么是“pattern space”and so on;
  (3)对unix/linux自身的熟练或理解的过程:
    shell编程离不开os,所以shell直接依附与你对os的理解:
我举个例子:
    现在叫你用shell写查找登陆用户的目录下所以的“*.a”文件,然后把找到的文件放到a.tmp文件中。
    其实shell并不难,但是在写该shell之前你必须知道"find"命令的用法,如果你find不会用,那什么都是免谈;
以上是我对shell编程的看法,请专家指教!!!!
谢谢!!

论坛徽章:
0
发表于 2004-04-25 15:04 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

谢谢,这儿有这么好的帖子,谢谢!

论坛徽章:
0
发表于 2004-04-25 15:33 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

向楼上的几位学习@_@

论坛徽章:
0
发表于 2004-04-25 16:13 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

总结楼上的心得并加以运用, 多谢无私的奉献, 这精神值的推广.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-04-25 16:13 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

加精鼓励!
希望看到forest077更多的佳作!并希望shell版的朋友能够有更多的经验交流,也希望更多的初学者能够从中汲取有益的经验,使我们的shell版更精彩更有魅力!

论坛徽章:
0
发表于 2004-04-25 16:31 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

经验不错,值得借鉴,谢谢

论坛徽章:
0
发表于 2004-04-25 16:39 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

原帖由 "admirer" 发表:
加精鼓励!

    
感动啊,偶在坛子里那么久了,这是第一篇精华呀,多谢老大!   

论坛徽章:
0
发表于 2004-04-25 17:36 |显示全部楼层

我的shell水平越来越高了--向shell初学者介绍一些学习经验

hoho!~
我也要努力的,我虽然目前很菜,但是还是有很大的上升空间的:)
大家一起,努力ing
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

【CUer福利】柯尼卡美能达2018数字化整合解决方案巡展
智领共创链动价值-2018数字化整合解决方案巡展

2018年11月,柯尼卡美能达携手主流IT网络媒体IT168及旗下ITPUB、ChinaUnix等论坛,特此邀请企业IT管理、运维人员/办公设备采购负责人员共同参与,分享柯尼卡美能达“智领共创链动价值”-2018数字化整合解决方案巡展!现场体验MOBOTIX智能视频监控解决方案!

活动入口>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP