Linux學習路線與方法

2021-06-26 05:41:02 字數 4331 閱讀 7545

linx學習路線

首先大家一定要知道什麼是linux吧。

linux是一套免費使用和自由傳播的類

unix

作業系統,是乙個基於

posix

和unix

的多使用者、多工、支援多執行緒和多

cpu的作業系統。它能執行主要的

unix

工具軟體、應用程式和網路協議。它支援

32位和

64位硬體。

linux

繼承了unix

以網路為核心的設計思想,是乙個效能穩定的多使用者網路作業系統。

看完這段大概知道了linux

是類unix

作業系統,所以一旦你精通了

linux 

其他的類

unix

的作業系統例如

opensolaris

,freebsd

都能觸類旁通。

大家可以按照我說的順序自行借書學習。

1.安裝作業系統linux

總之你要學習linux

就一定要安裝

linux

,我個人推薦裝虛擬機器,原因是第一方便,第二對於初學者來說不會打消積極性。當然最好的肯定是裝雙系統,讓自己無路可退完全投入到

linux

的世界,但是各種配置會很頭疼,所以初學還是用虛擬機器,畢竟學習的結果取決於你自己的態度。

2.基本的命令

我覺得linux

系統的系統互動的靈魂,就在於命令列的存在。命令比圖形介面更加高效,命令可以完成圖形介面不能完成的任務,命令比圖形介面更加靈活,具體的我就不多闡述了,必須學習命令列,並且他也是學習shell

指令碼程式設計的基礎。

3.基本的編輯工具

在window

下有常用的

word

之類的編輯器,但是

linux

下卻不經常用,畢竟

linux

是程式設計師的作業系統,所以誕生了為了適應程式設計的需求的編輯器vi和

emacs

。它們各有千秋,但是他們都提高了程式設計師的辦公速度(當然是你完全掌握了這兩個編輯器的情況下,才能效率變高,一開始肯定是很慢的,畢竟他們也有很多的命令,但是一旦你熟練了,就會有一種想敲**欲罷不能的感覺)接下來我就來簡單介紹一下他們。

vim的作用 程式設計師寫**的時候手需要時刻保持在鍵盤上,

隨機定位**、隨機刪除**、移動**、插入**的操作大大多於閱讀、翻頁操作,中間卡頓一下效率就大大降低了。

emacs被稱為「神之編輯器」,可以做幾乎你想得到的任何事,是乙個「偽裝成編輯器的作業系統」。用過的人都知道

ctrl

鍵要按得多頻繁。他還有各種模式,我就不一一贅述了。

4.shell指令碼程式設計

shell指令碼可將多條命令編寫到乙個檔案中,通過執行指令碼檔案即可完成指定的工作。它常用於系統啟動,程式編譯等需要重複執行大量命令的命令的場合。能提高使用者操作和管理員進行系統管理的效率。尤其是

linux

網路伺服器的管理員,非常需要命令列的熟練,管理各種資訊。

5.linux下

c程式設計的工具學習

在linux

編譯執行

c語言程式可以真真切切的感受到各種工具的組合。比起

widows

下各種整合環境的開發平台,更加原始的感覺到程式編譯執行的過程。編輯器已經說了,接下來就是編譯器了。

gcc乙個特別著名的編譯器,它可以根據不同的引數生成各種的中間的產物。

說完編譯器接下來就是偵錯程式dbg

,他的除錯也是完全是敲入各種命令,功能強大。

但到現在大家有沒有疑問,那如果寫了很多類,要在乙個工程裡執行,該怎麼辦?

所以linux

有乙個makefile

工具。

makefile   乙個工程中的原始檔不計其數,其按型別、功能、模組分別放在若干個目錄中,

makefile

定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 

makefile

就像乙個

shell

指令碼一樣,其中也可以執行作業系統的命令。

總而言之大家要學這三個工具

1.編譯器

gcc 

2.偵錯程式

dbg

3.makefile

6.linux環境下c程式設計

學完第5

點的工具,就可以開始

linux

環境下的

c程式設計。這裡我要推薦一本書《

unix

高階環境程式設計》(簡稱

apue

),可以拿來當字典用。

具體的學習方法是用apue

當字典查閱函式,再用

man命令,具體看函式的引數,與返回值,達到不用死記,有需要時查閱。

在這裡所關注的只是linux

應用層方面的內容,屬於最基礎的內容,當然也是最重要的內容。學習它,可以更深入理解作業系統原理課的程序那一塊知識和實際的運用。我具體講一下是哪幾塊。

1. 檔案程式設計 

開啟檔案 建立檔案 關閉檔案 讀檔案 寫檔案 檔案定位 複製檔案描述符

2.時間程式設計

獲取日曆時間 獲取格林威治時間 獲取本地時間 字串顯示時間 獲取高精度時間

3.多程序程式設計

建立程序 程序退出 程序等待 執行程式

4.程序通訊

無名管道通訊,有名管道通訊。

5.訊號通訊

訊號量互斥 訊號量同步

6.網路程式設計

tcp,

udp 

基於各種協議的通訊的客戶端和伺服器

7.大家想深入就深入吧,還有很多不一一贅述。

7.伺服器管理配置

伺服器這一塊我沒怎麼看,但是這個也是很重要的。linux

伺服器很流行,穩定,功能強大,可定製性高。尤其是以後想從事

linux

伺服器工作的可以好好深入,對於想搞嵌入式

linux

開發的,必須學習配置

tftp

服務 配置

nfsbootloader

和核心。

web 伺服器 例如最典型的就是**伺服器,放置**檔案,讓只要可以和你

ping

ftp 伺服器 

ftp是檔案傳輸協議,現在一般都指

ftp伺服器或者裝了

ftp

samba 伺服器 

windows

檔案和印表機共享等等

nfs 伺服器  開發板

linux

系統和pc

機交換資料(檔案),在開發板上直接執行

pc上的應用程式(除錯用),使用

nfs根檔案系統啟動開發板的

linux系統

8.深入理解

linux核心

這一塊主要是想深入理解linux

這個系統的人還有想學習作業系統的人,可以去研究,因為他可以和作業系統原理課互相穿插學習,換句話說就是一一對應,從實際存在的東西上實踐原理,能更好的學習作業系統。像想要深入

arm+linux

開發的以後也要學會核心的裁剪,驅動程式的開發,也少不了與

linux

核心的打交道。

這個我主要推薦大家可以看適合過渡學習的《linux kernel development》 這本書講的不深也不淺,很適合在你系統地學習了os

理論之後,直接看**詳解又覺得暫且還不夠功力的學習者,它可以帶你由理論學習階段逐漸過渡到實踐階段。

接下裡可以看《understanding linux kernel

》 這本書我看了以後第一感覺高度濃縮,概念性很強,**也很深入,每個章節之間 聯絡很深,沒有一定的功底,會讀起來很難。

另外還想深入搞驅動的話不妨可以看《linux device driver

》,我當然還沒到這個程度。

總而言之,每乙個階段有每個階段所需要學的,你不需要把每個階段都學的很深入,但是基本的都要會,然後在深入某個方向努力學習,驅動啊,核心啊,搭建伺服器啊等等,即廣泛地學習,然後精一處。不管怎麼樣,學習是沒有錯的。學習一樣東西主要是掌握他的思想,尤其是我說的第8

點,看一遍我 推薦的書是沒用的。重複去看,每一遍都會有不同的感受的,學習是循序漸進的過程。不能浮躁,不能貪圖速度。

再推薦點書,入門linux

系統命令行,可以看《鳥叔私房菜》,對

linux

有個大體的框架,關於

shell

程式設計可以看《

linux

與unix shell下c 

程式設計,可以看

apue

,伺服器可以根據自己用的

linux

發行版找書學習,其他核心就像我上面說的。

Oracle學習路線與方法

一 oracledba的成長路線 初級的ba 中級dba 高階dba 資深dba 頂級dba 初級的ba 1年左右的工作經驗,碰到乙個問題解決乙個問題,永遠都是在面對問題,頭疼醫頭,腳疼醫腳。安裝 公升級 遷移 備份 恢復 監控 巡監。2 中級dba 3年左右的工作經驗,知道怎樣去避免一些常規問題的...

linux 學習路線

初級階段 1 命令是必須要學的,linux常用的命令大概在80個左右,這些常用命令一定要熟練掌握。2 掌握linux軟體包的常用安裝方法,例如原始碼安裝,rpm方式安裝等等。3 學習安裝裝置驅動程式 比如網絡卡 顯示卡驅動 4 熟悉grub lilo引導程式及簡單的修復操作。5 熟悉linux檔案系...

Linux程式設計學習路線

首先先學學編輯器,vim,emacs什麼的都行。然後學make file檔案,只要知道一點就行,這樣就可以準備程式設計序了。然後看看 c程式語言 k r,這樣呢,基本上就可以進行一般的程式設計了,順便找本資料結構的書來看。如果想學習unix linux的程式設計,apue 絕對經典的教材,加深一下功...