|
|
有很多刚进入linux的兄弟总是很迷惘,究竟如何才能成为一个linux高手呢?在这里我先声明一下,我自己的水平也不高,同样的问题自己也问过,接触linux的时间也不长,才一年,主要想和大家讲一下我的心得体会,希望高手不要见笑,呵呵,也希望对别人有点帮助。(声明一下:这个帖子比较适合在linux做开发的兄弟)
首先需要掌握的肯定是学会用shell命令,因为无论从事什么工作,在类unix系统中肯定是离不开它的,unix系统一个非常强大的地方就在于它提供很多很好的工具,这些工具的功能涉及方方面面,而且全部可以在shell下被调用,所以说学习shell命令,实际上就是在学习使用这些工具,比如说格个盘啊,备份个系统什么的,你可能会问,工具那么多,我得学多久才能学完啊,我的建议是先学会基本的与系统管理相关的命令即可,其它的以后用到的时候再研究也不迟。再来说一下脚本,顾名思义,电影有剧本,shell有脚本,它就是一个个的shell命令按照你希望的方式组合在一起,从而完成一个复杂的并符合你自己需要的功能,当然其中涉及一些shell的语法,不过不用担心,shell的语法非常简单,你随便找一本shell编程的书,不要厚的,看一遍知道怎么回事就可以了,因为你以后可能很多工作都需要些脚本,写写就都熟悉了,但是到这里你可能对脚本能干什么仍然觉得很抽象,没关系,linux系统有各种各样的脚本,找一些来读一读,遇到不懂的地方来这里问一问,这样的话过个一两个月就差不多了;最后我们要知道shell脚本的优势在哪?因为干一件事情可以有多种不同解决方案,就我的体会到的,shell的优势主要有两个(可能还有,具体看书),一个是开发成本低,这里指的是容易上手,开发时间短,易调试,易升级;另一个是其强大的文本处理能力,这主要归功于grep,sed,awk以及正则表达式的使用,你现在知道在什么情况下可以选择写脚本了。
到这里就达到了会用linux系统的水平,但是相信你可能对这个系统还是很陌生,比如是/etc,/usr,/var这些目录都是用来干什么的啊,为什么是这样一个组织结构呢;系统是怎么引导起来的呢等等,有时候配置个软件都要搞半天,字体啊,设备啊,网络啊方方面面,所以现在应该来深入了解一下系统在运行的过程中,各部分都在干什么,不妨找一个系统管理的书看看,linux是一个高度可定制的系统,了解它之后,不但可根据自己需要来修改它,而且无论做什么都会事半功倍(这个到时候你会体会到的)。如果有兴趣的话,可以研究一下LFS,LFS版有好多热心的兄弟,而且精华贴的质量非常高,而且我觉得LFS对做嵌入式特别有帮助,可以照着教程做一遍,收获会很大的。
再来说说linux高级语言程序开发,为什么要现在才说,因为你如果上面的那些知识不掌握的话,开发程序会屡步唯艰,这是真的。先说说开发工具, windows的开发环境是相当傻瓜的,新人很容易上手,如果你跟个项目的话,四五个月应该就会很熟了,我觉得这也是ms成功的地方之一,要说linux 有没有真正的能和VS媲美的开发环境,就我所知没有,但是像ELIPSE,KDEVELOP,如果用熟了,也很不错,而且现在也都在不断的完善中,有人说不要一开始就用集成开发环境,这一点就仁者见仁了,各有各的好处,网上的讨论很多,大家自己选择。但是我觉得想gcc,autotools, makefile,gdb这些东西是肯定需要掌握的,网上有教程,看看下载下来看看,但是也不需要了解太深,因为这些都是和具体项目联系很大的,比如 makefile,一般都是需要自己写的,你要是不写,光看教程,我保证你一周全忘(也可能我记忆力不行),所以先知道怎么回事,然后结合实际项目实践,我插一句,计算机这行,实践是提高水平,加深记忆的最快途径,相信大家也体会到了,不要光看书,那是没用的,你不动手很快就忘了。好了,下面说说语言,因为我主要是C编程,所以就说说C吧。首先找一本C语言的书,要经典的,有精力就看一遍,没有的话就当作手册实践翻翻,但前提是你以前学过C;然后看《Unix环境高级编程》,这本书看完了,对用户态系统编程这部分就没什么大问题了,然后如果做网络的话,看《Unix网络编程》,这本书和前面那本是一个作者写的,都被奉为UNIX编程的圣经,可惜作者英年早逝啊,在这里想他表示敬意,另外推荐《Internet自顶向下方法学》,非常适合网络的入门教材,国外好多大学都用,相当经典。另外,linux有丰富的开发库及其详尽的API,大家可以自己做的项目的需要去研究。最后给点建议:编码风格一定要规范,不要用匈牙利命令法, linux编程是不用的,除非你们公司都用,另外写程序要严谨,大家知道,一个100000行的程序中可能关键代码就几千行甚至个更少,但是如果没有另外那九千多行的代码,程序就没有健壮性可言,所以错误处理,边界检查这些东西千万不要省。还有像上面那几本书不要看一遍就放在一边,看完了还要时常翻翻,有精力的话就再看一遍。
最后说说内核开发,由于我水平不够,读了一阵源码就放弃了,而且我也不建议刚接触内核时就读源码,推荐几本书,首先可以看《Linux Kernel Primer》,这本书算是内核入门的权威教程了,不过其中文译本是真TM差啊,错误百出,大家看原版吧,我正在看,看完之后如果想要进行内核开发的华,可以看《linux设备驱动程序》第三版,如果想深入了解原理的话,可以看《深入理解linux内核》第三版
好了,就说这些吧,如果有什么说的不妥的地方,大家尽管说,自从接触linux以来,见识到了很多高手,无论是他们的学识还是素养都让我钦佩和感动,所以我也就不敢藏拙了,希望对刚入门的兄弟有帮助,另外我的文笔自知有限,敬请包涵。 |
|