LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1340|回复: 6

谈谈我对linux之路的一些看法

[复制链接]
发表于 2007-7-27 14:09:55 | 显示全部楼层 |阅读模式
有很多刚进入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以来,见识到了很多高手,无论是他们的学识还是素养都让我钦佩和感动,所以我也就不敢藏拙了,希望对刚入门的兄弟有帮助,另外我的文笔自知有限,敬请包涵。
发表于 2007-7-27 15:29:42 | 显示全部楼层
赞一个,给大家分享了上手的心得。

不过个人认为linux不应该这样用,很简单:用电脑是因为是”需要“而不是因为”开发“,你身边的人不是只因为要开发什么才用电脑的吧,也没几个是在意会不会”开发“吧?

linux发展的瓶颈是因为太局限于技术层面,与大众的需求有距离,所以现在只能苦苦的争抢温痘死的份额,linuxer还要多努力呀!
回复 支持 反对

使用道具 举报

发表于 2007-7-27 17:20:45 | 显示全部楼层
经验分享是最重要的
回复 支持 反对

使用道具 举报

发表于 2007-7-27 18:13:01 | 显示全部楼层
我碰到用Linux的人基本上是这几类:
会基本命令操作、常用服务的安装配置——网管
会编译内核、各种软件,定制自己的版本(u盘、LiveCD)——真正的linux玩家
会脚本、C编程、perl/pyson——软件开发人员
一般电脑爱好者嘛,会用ubuntu、suse上网、打字就可以了
看个人情况而定,没必要个个都想你这样去用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-27 22:26:56 | 显示全部楼层
我把错别字改了,太马虎了
回复 支持 反对

使用道具 举报

发表于 2007-7-28 12:36:12 | 显示全部楼层
呵呵,好好学习了一下!@
回复 支持 反对

使用道具 举报

发表于 2007-7-28 19:41:30 | 显示全部楼层
Linux是我拿来学习用滴,因为我老师也用这个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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