[转帖]再谈如何学习Linux

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
loveubuntulinux
帖子: 2
注册时间: 2007-10-16 15:11

[转帖]再谈如何学习Linux

#1

帖子 loveubuntulinux » 2007-10-16 15:13

如何学习Linux,是个老生常谈的问题,也是各大社区讨论频率较高的问题,以前也有好多朋友发邮件和我一起讨论,我都是草草的回复说找Google和Baidu。近日,心血来潮,突然想把这几年使用Linux的经验总结一下。

一,为什么学Linux?哪些人需要学Linux?
我个人接触计算机的时间很晚,99年才买的第一台计算机,2000的某一天我知道了RedHat这个东西,还知道了她是Linux的一个发行版。当时我正上高中,学习也比较紧张,所以安装上了RedHat以后呢,也没怎么认真学习,大部分时间还是玩Windows。真正开始学习Linux应该是高考后的那个暑假,2002年6月。

我也不知道如何来回答为什么要学Linux这个问题,反正我就感觉Linux很吸引我。刚开始觉得敲打几个命令就能完成所需要的事很牛B,向黑客(呵呵,那时还真是年少无知),再接着知道shell编程以后,就发现Linux可以帮我完成很多繁杂的操作,我当时最满意的作品就是写了一个Bash的脚本,用来检查HTML语言是否规范,为此兴奋了好几天。Linux可以在相当程度上满足一个懒人的需要,这可能就是我选择Linux的根本原因吧,至于其它的,我还真没什么认真考虑,学Linux可以找到好工作、更有前途这些好处我就不在敖述了,网上很多,至于是真是假,自己看着办。

哪些人需要学Linux?我认为任何想让计算机为自己干活的人,都可以学Linux。KISS(Keep It Simple,Stupid!),在Linux就有很好的体现。我是个懒人,以前在windows里面很多冗繁的操作,我都想方设法的在Linux里面自动让计算机来实现(或许windows也能,但是我不会),如果你想让计算机更体贴的为你服务,那就学习Linux吧!

二、选择哪个发行版学习?
这也是个困扰初学者的问题,当初我也是,我最高记录是一天换了三个发行版。想当初,什么Redhat,SuSE,Fedora,Mandrake, Debian,红旗,中标等等,能装的都装过。最后我算是明白了,邓爷爷说的没错阿“不管黑猫白猫,能抓耗子的就是好猫”,所以说大家就不要太刻意的去追求哪个发行版了,能用就行,至于好不好用,能不能让其发挥最大的功能,那不是发行版的问题,而是你的问题。BTW,我现在使用的是Debian,已经使用快三年了!

三、如何学习Linux?
至于具体应该如何系统的学习Linux,我也不能发表什么权威的看法,完全都是自己的经验。

1、基础学习。
Linux发行版都是在Linux Kernel的基础上加以定制的,可以这样说,不管用哪个发行版的Linux,其基本操作都是想通的。我个人觉得,Linux基础主要指以下几个方面:
a、学习Linux前,建议了解一下操作系统、计算机硬件结构、网络、等基础知识。最好多认几个英文单词,呵呵。
b、Linux的安装与定制。如何将Linux安装在自己的机器上,且将Linux定制成最适合自己机器的操作系统。
c、Linux常用命令,诸如:cd,ls,cat,ps等等这类基础命令。
d、Linux软件的安装。你可以采用rpm、deb等各种形式的安装方式,但我个人比较建议基于源代码的安装,这样更能学到东西。
e、熟悉X窗口,现在比较常用的是GNOME和KDE,选一个自己比较喜欢的,熟悉她。
f、熟悉Linux的文件结构,了解每个目录其主要包含内容及作用。
g、基础Shell编程,用Shell编程来完成最基本操作,诸如:系统备份等。
h、熟悉vi、emacs等常用的编辑器,当然,你也可以选择gedit等X环境的编辑器。

2、进阶学习
当你掌握了一定的基础以后,根据自己的需要,进行深入的学习。再次说明,本文完全都是我长期使用Linux的经验总结,不代表任何组织负责,不承担任何责任,呵呵。
a、使用Linux架设自己的服务器,现在比较流行的是LAMP(Linux,Apache,MySQL,PHP/Python)。
b、深入理解shell编程,学习sed/awk等,学习正则表达式的写法。个人比较强调,正则表达式在处理文本的时候相当有用,一定要学好哦。
c、学习各类常用服务器的搭建。如:ssh、sendmail/Qmail、proftp/vsftp、Samba、Squid、PostgreSQL/Oracle、Bind等。当然,你可以选择性根据自己实际情况来学习。
d、如果条件允许,可以学一点web脚本编程语言,如:perl,php等。
e、如果对网络比较喜欢,可以深入的学习TCP/IP协议。
f、如果想再企业级环境中使用,可以深入了解多用户管理、文件系统、日志分析、备份与数据修复、系统补丁、内核升级、网络安全等课题。人不是全能的,可以选择自己比较喜欢的课题来研究。
g、如果对程序设计比较感兴趣,可以学习C或Python,个人感觉Python作为入门编程语言比较适合,因为她不难,至少比C简单多了。

3、高级学习
当对Linux有了充分的认识后,那就根据自己的条件,来更有选择性、针对性的学习了。我个人在Linux的认识上,还在这个阶段徘徊不前,所以就胡说八道一下,如有不正之处,还请各位多多指教:

a、程序设计类:
先要理解Linux的工作原理,熟悉内核的各模块功能,熟练使用C语言。所以说,要想学好Linux,C语言是相当重要的。现在大学普遍使用C语言的课本都是老谭同志的那本,还行,不过我个人建议看看《The C Programming Language》这本书对自己是相当有好处的。不过看懂这俩本书也不能马上应用到实际工作中来,因为这两本都是基础中的基础,理论中的理论,要想实际运用C语言,还需要自己多读别人的代码,多写代码,不要怕麻烦,我刚接触C语言也很郁闷,总是不能理解,尤其是指针啊、数组阿之类的,搞的我莫名其妙的。

要想学好程序设计,数学是基础,我上大学那阵,开了高数、概率论、线性代书、离散这四门必修课。当时也没怎么认真学,觉得考试能过就好,现在后悔了,闲暇之余都不敢看小说了,要把以前的数学书拿出来复习了,郁闷死我了。数据结构和算法是一个程序的灵魂,所以要想在程序设计上有所建树的,一定要再这两方面深入研究。不管用什么语言来实现,都是需要一个好的算法和数据结构。

当然了,Linux内的程序设计不单单是C语言,你还可以选择自己喜欢的、熟悉的语言来开发,如:C++、Python、JAVA等等,太多了。就程序设计而言,选择什么语言并不重要,重要的是解决问题的方法。基础很重要,什么操作系统原理阿、计算机结构阿、数字电路阿,能多多少少了解一点,总是不会错的。

b、系统管理类:
如果你的目标不是程序员,而是一个系统管理员(就像我),那个人建议主要注意以下几个方面:
1、一定要学好Shell编程,当你熟练以后,你会发现,用shell编程,解决问题真的很简单。
2、对自己使用的发行版,一定要做深入的了解,哪些文件控制哪些,等等。
3、对网络协议、网络安全、网络设计,要深入学习研究。
4、能在第一时间内获悉你正在使用环境中的软件bug,内核漏洞,并且根据实际情况,决定采用什么方式补救,某些时候,不一定升级就有效。
5、有兴趣的可以研究研究Linux集群,用集群来解决实际环境中的一些实际问题,如:热备份、负载均衡等。
6、对系统备份、数据恢复,一定要有深刻的认识,我以前就遇到过数据丢失的情况,后悔莫及。
7、了解你实际工作环境中计算机的硬件体系。
8、理解你的计算机所提供的各种服务的原理。如,vsftp、ssh、apache等工作原理。

四、一些我个人感觉比较好的Linux书籍
W.Richard.Stevens先生的那六本书(书名俺就不打了,磨损键盘,反正大家都明白)。并再次缅怀W.Richard.Stevens先生,没有您,就没有计算机的今天。
《LINUX系统管理技术手册》 EVI NEMETH,GARTH SNYDER,TRENT R.HEIN写的,不怎么出名,但个人感觉很实用,绿皮的。
《鸟哥的Linux私房菜》 台湾鸟哥写的,他网站上有电子版,对于入门者来说,还不错。
《LINUX DEVICE DRIVERS》这本书就不说了吧,经典中的经典,其实我买了,看了,但是感觉没用,呵呵,我不做开发的。
《THE ART OF UNIX PROGRAMMING》Eric Raymond先生的经典作品,多看点书,总是没错的。
《UNIX SHELLS BY EXAMPLE》 Shell实例编程教学,还不错,有很多有用的东西,并且介绍了好多版本的shell,不单是bash。
《莱昂氏UNIX源代码分析》经典书,可以做收藏之用,但是看了总比没看的好

暂时就列这么多吧,其实呢,看书这个东西,不在乎多少,而在于理解掌握多少,自己明白的,才是自己的,自己不明白的,永远都是书本的、别人的。我以前有段时间,下载了好多电子书,结果都没看,浪费空间了,呵呵。不过多看点书,总是没有坏处的。

五、Linux相关的一些资源
我看的最多的是这两个网站
http://www.chinaunix.net
http://slashdot.org
其次就是还订阅了N多邮件列表,反正没事就多学点东西,学无止境麻,欢迎大家没事就来搔扰我:cmyf.nameATgmail.com ,呵呵

原文地址:http://cmyf.name/2007/10/16/%e5%86%8d%e ... 9%a0linux/
PhoenixJ
帖子: 1492
注册时间: 2007-08-09 3:33
系统: Windows 12.04

#2

帖子 PhoenixJ » 2007-10-16 15:15

我觉得吧。。。不能为学习而学习阿。。

要为赚钱而学习,嗯!
头像
everysun
帖子: 30
注册时间: 2007-10-09 19:16

#3

帖子 everysun » 2007-10-17 21:27

写的不错!

W.Richard.Stevens先生的那六本书(书名俺就不打了,磨损键盘,反正大家都明白)。并再次缅怀W.Richard.Stevens先生,没有您,就没有计算机的今天。

那六本书呀,能否列出书名???
bnn1044
帖子: 6
注册时间: 2006-11-29 11:45

#4

帖子 bnn1044 » 2007-11-08 21:44

写得不 错 。学习 中
回复