我也讨论一下,想成为linux熟手的方法

中山野鬼 发布于 2012/03/28 18:50
阅读 1K+
收藏 6

首先明确啊。我不是高手。基本能力如下:

1、linux的安装,熟练。

2、linux shell下的基本命令熟练。

3、linux内核源码,部分模块看过。没有全部看过。

4、linux下的C设计,熟练。

5、linux下的C工程make,熟练。

低于熟练的我就不说了。和linux平台没有太多关系的,比如数据库,算法,系统构架,网络我也不说了。

但说来说去我都不算不上高手。

刚看了一篇帖子,说如何成为linux 高手。我觉得有道理,也有偏颇的地方。给出怎么成为熟手前,需要说说高手和熟手的差异。

电影台词经常会说”高,实在是高“。高手,讲究高明。此时已经和linux没有关系。而是其利用linux的方法,要么可以做复杂到其他人做不了的事情,要么看似复杂的事情,他能简单高效的处理,分解开来,其他人都能懂,但这个组合的巧妙,大家不由的说”高,实在是高“。这才是高手。

因此,高手不是说精通linux内核。可以给你如数家珍的所有内核函数背一边。有什么意义呢?字典加个发声,就可以替代。

高手是指,能有效区分工具自身和不同工具之间的特性并且可以最大化的利用工具(包括编程工具本身),完成一般人完成不了的任务。当然前提是对系统和工具的足够理解,特别是原理性的理解,但还要包括巧妙的使用。

熟手相对高手而言,在工具或系统的理解上还是有些差距,由此导致并不能最大化的利用好工具并创造出更巧妙的解决方案。

但你想成为高手前,肯定要过熟手这一关。因此,对于想成为熟手的朋友给出以下建议。

1、要理解linux和windows 理念上的差异。这个很多教linux的人会忽视不独立提出来,但是会反复说,这个和windows的概念不一样,大家要注意了。

就我认为,linux源于unix,和windows最大的差异在于 ,前者是模块化,例如通过各个模块的组合使用发挥功能,由此各个模块短小精干,效率很高,但散列出来,总觉得不如微软的东西方便。而组合起来,又比微软的东西方便很多,这是linux老鸟非常鄙视微软,但是菜鸟体会不到的更本原因。而微软是层次概念。一层套一层。你想做的事情,都得在微软提供的某个层次上展开。如果这个层次微软无法提供你想做的事情,微软会说是你的问题,而不是他的问题。其实方便并不代表好,方便面很方便,有营养吗?只是吃的快而已。你很难想象在微软的东西中,一个软件的输出,会作为另一个软件的输入整合起来作为一个新的应用(自动的,产品化的),但在linux下,你经常可以见到模块的组装,特别是管道的概念。每个应用程序只是管道中的一个部分。所以各位新人,对linux你一定要报着模块化组装的思想来看待。

2、linux和window还有个比较显著的差异就是开源。其实这个和linux是模块化的非商业版本盈利模式有关以区别UNIX。既然linux是模块化的,几乎linux不会标榜自己把你的任务全部完成,因此,他可以提供马桶,水和纸,但最终的便便还是要你自己拉。

而层次化的windows则反过来,他希望他能把你想要做的事情全部给你做完了。但是毕竟客户的需求是动态的,在出现矛盾时,微软会说,是你没有参考好说明书,我们的全自动马桶包括催便便歌曲只能支持你1分钟的时间,过了1分钟。马桶、水、纸都会自动禁用,此时我们已经自动给你端上了可口的饭菜,同时你必须吃掉。否则,我会很生气的对你”蓝屏“。

开源不单单是个copyleft的事情,更多的是希望linux能更好的为你服务。如果你希望拍一次手,就会自动冲水,开源能更好的让你实现(前提你有这个能力)。而微软的产品会认为"你有权利享受我们拍手冲水的优良服务,但是你只能拍两次手”

综合上面两点,对于linux新手而言,需要注意,尽可能的先去熟练已经有的模块。除非必要。否则尽可能不要自己重写代码。但是linux上面的工具很多,模块很多。命令很多。就是一个命令的格式也很多。我也很不喜欢熟手和高手,动不动说一句“你去 man","你去看内核”。由此导致新手往往很痛苦,痛苦在于,我很想自己组装一个飞机,但是这么多零件,我真的很晕。

我的一个建议就是。如果你刚学写linux或者没有到一定的知识积累,那么就钉死一个目标去做。哪怕你说,我想在linux下用C语言编写一个hello world。你为了这个目标,可能就学会了ls,学会了mkdir等等。先不要展开,觉得这个也好奇,那个也好玩。尽可能快的完成你的目标。因为是linux不会什么都提供给你。你要完成一个简单的目标也是要好几个步骤,因此你肯定有所积累。

随后,你要改变你的目标性质,原先是命令行的操作,你可以开始琢磨是否能脚本化操作。但一定要注意,尽可能的让后期你的目标中,有前期目标成果的组成,这样你不需要重新面对一堆不懂的问题。

因此,linux的学习,先不要考虑你是打算研究linux内核的心态,仅针对你的目标,强迫自己,始终在linux的环境下,逐步实现。深度递进的学习,再广度展开。哪怕没有图形化界面,你强迫自己学VI。如同先烈们那样,那么你也会发现,自己很快学习到很多东西,而且不会那么痛苦。

逐步熟练对linux下已有模块的使用之后,你就会发现自己有创作的灵感,可以仅利用已学的几个模块,创造性的组合出别人所描述的“高,实在是高”的设计。

加载中
0
aiasfina
aiasfina

LZ一说话一大篇,先膜拜一下。。

我一开始用Linux也就满足一下虚荣心,compiz亮瞎眼。

后来学会了低调,不过依旧苦逼Linux不知不觉过了两年,现在离不开了。。

ddatsh
ddatsh
+1 我能离开 :)
0
蟋蟀哥哥
蟋蟀哥哥
野鬼的时间倒是蛮多的
0
中山野鬼
中山野鬼

引用来自“蟋蟀哥哥”的答案

野鬼的时间倒是蛮多的
哈哈。我现在的职务有三个。其中两个是技术 +咨询。技术包括开发,咨询是管理咨询。所以没事情做时发表下想法,也算练手嘛。
中山野鬼
中山野鬼
@蟋蟀哥哥 : 欢迎欢迎,总被喷,就成 老”湿“了。
蟋蟀哥哥
蟋蟀哥哥
@中山野鬼 : 嗯,多让@宏哥 来喷你几下
中山野鬼
中山野鬼
@蟋蟀哥哥 : 其实道理不辩不明。闷在肚子里当宝贝,那是蛔虫。拿出来,给大家批评了,也可以发现自己在认识上的不足。
蟋蟀哥哥
蟋蟀哥哥
不错。。 就当面壁思过。。 多反思下以前的技术..然后再给咱们分享
0
中山野鬼
中山野鬼

引用来自“Sanatir”的答案

LZ一说话一大篇,先膜拜一下。。

我一开始用Linux也就满足一下虚荣心,compiz亮瞎眼。

后来学会了低调,不过依旧苦逼Linux不知不觉过了两年,现在离不开了。。

口水多。所以朋友们认为我不做市场很浪费。不过以前同事认为我不搞技术也很浪费。哈哈。
0
Y-QTCe
Y-QTCe

我觉得这篇有些值得商讨。Linux模块化这里,你主要提到了管道和工具组合。但是管道并不是Linux所特有的,Windows其实也有。我觉得你这里更多的是在说CLI和GUI程序的区别。Linux上也有一大堆的GUI程序,我很少见到可以几个工具拼装起来的,除非是插件。

0
中山野鬼
中山野鬼

引用来自“Y-QTCe”的答案

我觉得这篇有些值得商讨。Linux模块化这里,你主要提到了管道和工具组合。但是管道并不是Linux所特有的,Windows其实也有。我觉得你这里更多的是在说CLI和GUI程序的区别。Linux上也有一大堆的GUI程序,我很少见到可以几个工具拼装起来的,除非是插件。

你的观点我非常同意。不过我强调是开发过程中的模块化。而类似插件的概念,已经到了用户使用阶段。
0
jackandrose
jackandrose
最近发现vi的map!相当好用。基本不用离开插入模式,一切搞定,否则老是按那个远远的Esc键,麻烦死了。
0
中山野鬼
中山野鬼

引用来自“jackandrose”的答案

最近发现vi的map!相当好用。基本不用离开插入模式,一切搞定,否则老是按那个远远的Esc键,麻烦死了。
VI你会了没有不好用的。确实是个好东西。当然我仍然建议其他新人,没有必要的情况下别学这个。呵呵。
0xTang
0xTang
VI确实是好东西,但是也是复杂的东西,其实VI和EMACS是以前的先辈们在没有IDE或者其他编辑软件的情况下强制自己苦逼的努力的适应和学习,到最后,他们发现,已经离不开这真心很强大的东西了。
0
jackandrose
jackandrose

引用来自“中山野鬼”的答案

引用来自“jackandrose”的答案

最近发现vi的map!相当好用。基本不用离开插入模式,一切搞定,否则老是按那个远远的Esc键,麻烦死了。
VI你会了没有不好用的。确实是个好东西。当然我仍然建议其他新人,没有必要的情况下别学这个。呵呵。
VI也有很多不好用的地方,比如没有关键字提示,vim也没有。不能同时看到源代码和bug,不能运行脚本,那个so完全不能满足要求。总之还有很多不太好用的的地方,求完美。
0
中山野鬼
中山野鬼

引用来自“jackandrose”的答案

引用来自“中山野鬼”的答案

引用来自“jackandrose”的答案

最近发现vi的map!相当好用。基本不用离开插入模式,一切搞定,否则老是按那个远远的Esc键,麻烦死了。
VI你会了没有不好用的。确实是个好东西。当然我仍然建议其他新人,没有必要的情况下别学这个。呵呵。
VI也有很多不好用的地方,比如没有关键字提示,vim也没有。不能同时看到源代码和bug,不能运行脚本,那个so完全不能满足要求。总之还有很多不太好用的的地方,求完美。
改啊。哈。我也想改别的东西呢。主要看是否有时间,值得做。
返回顶部
顶部