淺談如何學習linux
一.為什么要學linux?
本文引用地址:http://cafeforensic.com/article/201609/304210.htm當然最重要是愛好和興趣!如果你這種必要學,或者根本不喜歡,請不要浪費時間,你學也學不好!
二.起步
你應該為自己創(chuàng)造一個學習linux的環(huán)境--在電腦上裝一個linux或unix
如何選擇版本:北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux開發(fā)人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看無疑redhat是最多的,此外還有很多出名的發(fā)行版本,不再列舉。
對于初學linux的人來說,我建議是使用redhat,原因如下:
1)現(xiàn)在很多書都是以redhat為例講的,為了與書本協(xié)調(diào)一致
2)周圍的人都用redhat,交流比較方便
3)redhat應用范圍廣,有典型性和代表性
4)它易于使用和安裝,我們沒有必要把時間浪費在“裝系統(tǒng)”上而應集中精力學習最有用的東西。
【注】現(xiàn)在覺得RH很死板,AS,ES等用在服務器上或許不錯,Personal desktop用mandrake,debian,suse都不錯,筆者現(xiàn)在用Mandrake,因為她長得漂亮:)
如果你并不打算深入學習linux,而是有諸如適應北京市政府辦公平臺遷移到linux上這種需要,那么中軟,紅旗等中文linux是不錯的選擇
我強烈建議:自己親自動手把linux裝到你的硬盤上,你必須學會獨立安裝linux系統(tǒng)的技能,對于現(xiàn)在的版本來說,其實跟裝WinXP一樣簡單
從此現(xiàn)在開始,請不要以windows的工作方式來考慮問題,應該嘗試挖掘linux身上的“天才unix”的氣質。
三.進階
掌握至少50個以上的常用命令
理解shell管道|,文件流重定向>及追加>>等
熟悉Gnome/KDE等X-windows桌面環(huán)境操作
掌握.tgz.rpm.biz等軟件包的常用安裝方法
學習添加外設,安裝設備驅動程序(比如modem)
熟悉Grub/Lilo引導器及簡單的修復操作
熟悉系統(tǒng)固有目錄的名稱及公用
學會用mount命令訪問其他文件系統(tǒng)
了解vi,gcc,gdb等常用編輯器,編譯器,調(diào)試器
學習linux環(huán)境下的簡單組網(wǎng)
建議:買一本不需要太厚的linux教材,大致可以滿足要求(現(xiàn)在的書越來越多了,還帶很多圖,我當時可沒這么多書)
四.高級應用
澄清一些概念:linux的普通操作與真正的系統(tǒng)管理不能相提并論,后者需要很多知識
1.英語
即使你不學linux,我也強烈建議你學好英文[U.S.english]。因為實質上計算機語言就是英文和字符,所謂的多國語言只是外部包裝。你必須能無障礙的閱讀大量的英文技術文檔在搜索引擎找到的英文網(wǎng)站和網(wǎng)頁中熟練的檢索最好能有用英文直接交流的能力,擺脫了這個障礙,你的學習和理解速度就能快很多,你就有機會拉開和別人的差距。
2.shell[sed/awk]
shell是命令解釋器,是內(nèi)核與用戶界面交流通道,shell寫的小腳本有點類似于win下的.bat但shell比.bat強大的多,shell不只是解釋命令,更是一種編程語言,有時候幾百行的c用shell幾十行就能代替完成工作,因為shell的工作方式建立在系統(tǒng)已有的眾多應用程序之上
這也是CS中的一個重要思想。此外,shell可以實現(xiàn)工作自動化,這個概念也比較重要sed,awk用來處理文本,歷來很常用。
3.Perl/PHP
漂亮的腳本, CGI的首選,比ASP好,應用面很廣
4.CC++
C、C++是linux/unix的核心語言,系統(tǒng)代碼都是C寫的
5.ASM
系統(tǒng)底層及內(nèi)核,硬件,設備驅動程序,嵌入式開發(fā)都需要。//走核心路線的話,cc++,asm最重要
6.Java,Python,Tcl,XML
五、系統(tǒng)管理篇
在熟悉linux的基礎上還需要掌握至少一種unix。我首推Solaris,其次是FreeBSD比如運營級系統(tǒng)一般是Solaris+Oracle/DB2之類的學習apache、ssh、sendmail/Qmail、proftp/vsftp、Samba、Squid、MySQL/PostgreSQL/Oracle、Bind等各種應用服務器的構架及電子商務的應用熟悉TCP/IP協(xié)議族,學習諸如apache+php+proftp+mysql+quota的實現(xiàn)以及大型局域網(wǎng),分布式集群等各種企業(yè)級應用解決方案熟悉多用戶管理,數(shù)據(jù)庫管理,文件系統(tǒng),邏輯存儲管理,日志分析,備份與災難數(shù)據(jù)修復系統(tǒng)補丁,內(nèi)核升級,以及在此基礎上的防火墻構架等以保障系統(tǒng)安全在內(nèi)的各種系統(tǒng)管理技能。
我覺得,如果在此基礎上再掌握路由/交換設備便是一個不錯的系統(tǒng)管理員
各種基于linux的解決方案可參考相關書籍和文獻,必要時用google或各大linux站點站內(nèi)搜索引擎尋找最新文檔,以避免錯誤和漏洞有幾本技術大全和技術內(nèi)幕我認為都是這方面不錯的書
六、深入學習linux
我個人理解的讀linux內(nèi)核需要的基礎:在此之前,希望先把應用層的東西學一下,那樣會比較好理解
1.C
如果學過潭浩強的大學教科書(除了編幾個數(shù)學模型好像什么也做不了的那種),建議再看一下《The C Programming Language》Second Edition這本圣經(jīng)(如果想學緩沖區(qū)溢出,這點C的功力可能是不夠的,還有
2.asm (ATT語法,保護模式)
保護模式下的比較復雜,基本上每本講內(nèi)核的書都會有介紹有80x86 Intel語法的基礎就行,
有興趣可以看看Intel的官方網(wǎng)站
3.數(shù)據(jù)結構(離散數(shù)學)
計算機專業(yè)的核心課程,重要性我就不說了
4.操作系統(tǒng)原理
看懂這個再去讀linux吧
5.微機原理/組成原理(數(shù)字電路)
底層直接和硬件打交道,所以這個也要
6.了解linux/unix
我想至少你要會操作吧,了解unix的API
7.軟件工程/編譯原理
這方面的經(jīng)典書去www.china-pub.com可以搜到很多我覺得APUE這種書不適合初學者,還是先看看UPE
評論