不少人想學習Linux,殊不知道怎麼着手,甚至不知道Linux有哪些方向,很是迷茫。基於此,我特意寫了篇文章介紹Linux方向性問題,沒想到一不當心成了爆款:linux
看完這個回答,相信不少人至少知道了目前 Linux 從業者所從事的幾個方向,對於方向選擇有個大概的認知。程序員
自我介紹一下。我是良許,本科及碩士所學專業倒是機械,畢業後從零開始自學轉行 IT,1 年後被世界 500 強外企所錄用,目前是 Linux 工程師。github
本文將根據個人從業經驗及與同行大佬的交流,介紹一些Linux學習方法,而且在文末贈送一些Linux書籍的電子版及及視頻教程等資源,但願對你們有幫助!面試
對於Linux書籍的推薦,我特意寫了幾個回答來介紹,這裏就不重複貼回答了:編程
有沒有學習Linux比較好的入門書籍?windows
求推薦學習linux命令的書籍?centos
嵌入式Linux有哪些好書推薦?bash
無論學習什麼技術,資源都是必不可少的。想當年,我自學轉行,靠的就是大量的優質資源。優質資源會助你一臂之力,讓你快速入門。
當年我自學使用的優質資源,我也所有共享出來,在個人公衆號「良許Linux」後臺回覆「簡書」便可免費獲取。
固然,我也整理了另一些不錯的資源,寫在這個回答裏了,你們能夠看看:
1. Linux學習路徑
Linux應用開發自學之路這篇文章介紹了我從零開始自學轉行Linux的完整過程,被不少大號轉載,而且影響了不少人,你們能夠參考。
自學簡單編程可行嗎?這篇文章更詳細介紹了我是如何自學轉行的,包括心路歷程,轉行過程,轉行中須要注意的地方,以及更高效轉行成功的方法。
Linux 思惟導圖整理(建議收藏)這是一個技術大佬整理的Linux思惟導圖,包括:Linux學習路徑,Linux基礎入門,Linux內核學習路線,Linux命令參考,Linux命令速查等等。這份導圖雖然不是100%全面,但若是可以將裏面所有內容掌握下來,你也是個高手了。
2. Linux環境搭建
2.1 虛擬機安裝與配置
既然要學習Linux那確定須要一個Linux環境。那麼環境搭建有兩個選擇:1. 安裝虛擬機;2. 直接在實體機上安裝。對於這兩個選擇,我更傾向於第1個,由於前期學習一些命令及基礎知識,直接在虛擬機上進行就能夠了。
虛擬機經常使用的有兩種:Vmware,VirtualBox。Vmware功能更強大,可是是收費的。而VirtualBox雖然功能不及Vmware,但對於新手徹底夠用了。這兩篇文章所使用的是Wmare,手把手教你安裝並配置虛擬機,圖文並茂,一路跟下來就能夠安裝並配置好虛擬機,完成最基本的搭建。
2.2 主機與虛擬機文件共享
虛擬機安裝好以後,還有一項很重要的工做要作,那就是實現虛擬機與主機的互通,也就是互相共享文件。實現文件共享有不少方式,通常而言有如下幾種:
特別地,對於Vmware有一套本身的專屬文件共享方式,VirtualBox應該也有,但我沒去研究過。對於Windows與Linux之間的文件共享,咱們通常會用到一款很強大的共享工具——WinSCP,固然還有不少相似工具,好比Xftp,FileZilla。這些工具其實都是基於FTP協議,使用起來也大同小異,都很是方便。
2.3 終端工具
做爲一名Linux工程師,無論是運維仍是開發,咱們不少時間會是在命令行下工做。我通常是把虛擬機打開着,而後使用終端工具遠程到虛擬機進行操做。這裏推薦一款很強大的終端工具——MobaXterm,它的功能十分強大,界面也很是友好,我用上一次就愛不釋手。
固然還有不少好用的終端工具,好比XShell、secureCRT、Putty、telnet等,選擇一個本身最喜歡的工具便可。
2.4 編程工具
若是你是一名Linux開發人員,那你的工做確定少不了編程。我通常的做法是,在Window上使用代碼編輯工具編好代碼,而後在Linux下編譯。我常用兩個工具:Notepad++和Sourceinsight。
固然咱們也能夠直接在Linux下寫代碼,在Linux下編譯。Linux下寫代碼也有不少軟件,經常使用的好比最性感的編輯器——Sublime Text。
3. Linux基礎知識
Linux環境搭建完畢以後,咱們就能夠正式進入到Linux的學習中來。
3.1 Linux系統架構
學習Linux,咱們確定要知道Linux的系統架構是怎樣的。通常而言,Linux是由如下幾部分構成:
內核是Linux系統的核心,它往下直接與硬件打交道,向上鏈接應用程序。它是由Linux社區來共同維護,其中Linus是核心人物。內核主要是由C語言及少許彙編語言編寫而成,是最著名的一個開源項目之一。內核的源碼在這裏,但對於初學者,就別期望能把它看懂。
初學者只要瞭解一些內核的基本架構便可,後期能夠再進一步深刻學習。網絡上有一張很是經典的內核架構圖,能夠藉助來理解內核。
Bootloader就是一個單片機程序,用來引導系統啓動。這個程序比較簡單,有些高手甚至本身手寫了bootloader程序。
Linux文件系統有ext三、ext4等,而windows 有 fat32 、ntfs等。作底層開發的工程師須要深刻了解,在此不贅述。
3.2 Shell
Shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口(命令解釋器)。它的基本做用以下圖示:
對於Shell的使用,有很是多坑,初學者必定要規避。在此,我也找了兩篇Shell面試題,以幫助你們學習進步:
3.3 Vim
Vim是Linux裏很是重要的一個編輯器,可是,它比較難,對於初學者很是不友好,號稱上古神器。Vim有不少命令,因此咱們首先要學習Vim的基本命令。
若是你以爲Vim很差學,那麼我介紹一款提升Vim水平的遊戲。這款遊戲靈感來自PacMan,讓你使用Vim的命令去控制主角躲避怪物。把這款遊戲玩熟練了,你的Vim水平也上了很大一個臺階。
固然若是是官方標配版的Vim,那其實仍是很是很差用的。好在Vim社區有不少大神,他們開發了不少實用的插件,讓Vim用起來再也不那麼難用,好比如下三款很是實用的插件:
3.4 其它
除了以上3點,Linux系統還有不少基礎知識,這些知識不少很細,沒辦法一篇文章講完,須要在實踐中慢慢學習。
好比Linux系統的目錄結構,它是一個樹狀結構,跟Windows系統有本質的區別。
還有,Linux有不少快捷鍵,掌握了這些快捷鍵會爲咱們提升很多效率。
4. Linux命令
衆所周知,Linux有很是多命令,可是,剛開始學Linux千萬別貪多,別想着一口吃成大胖子。對於普通人而言,先學會一些最基本的命令,再去拓展其它更高階的命令。
經常使用的命令可能就二三十個,當你把這二三十個命令都用得很是熟以後,你纔算剛入門。固然,你別小看這些基礎命令,不少基礎命令有着本身的高級用法,當你把高級用法都玩透了,你就開始慢慢脫離小白了。
5. Linux神器
在 Linux 下工做,有一些工具可能大大提升你的工做效率。有些工具你們可能耳熟能詳,但還有更多神器可能連聽都沒據說過。
好比咱們程序員常常須要繪製一些流程圖,咱們可使用一些諸如EA之類的繪圖工具,但這類工具不少都很龐大,並且比較難學。在Linux下其實咱們可使用dot工具簡單高效繪圖!
再如,咱們若是和同事協做開發,想要把本身的操做過程錄製下來,發給同事而後同事繼續你的工做。或者,別人使用你的電腦,你想把他的操做記錄下來,以避免後期爭議。這時,Script命令就派上用場了。
固然還有不少很是實用的神器,限於篇幅就不一一列舉了。
6. Linux趣應用
工做都是乏味的,咱們要在工做中找到一些樂趣。做爲一個免費的操做系統,大量的愛好者爲 Linux 寫了不少頗有趣的應用,不只能夠幫助咱們提升工做效率,並且還能夠給咱們枯燥的生活帶來樂趣。
Linux 終端給人的感受就是黑漆漆一片,裏面只能顯示一些字符,而歷來沒見過顯示圖片的,可是,實際上,Linux 終端除了顯示字符外,固然也能夠顯示圖片(而後就能夠用來看女神照片)。那是怎麼實現的呢?這篇文章有答案:
人這一生,真的是很是不容易:讀書時,被老師、同窗嘲笑,工做時,被老闆、同事嘲笑,就連出去擼個串兒,還可能被朋友嘲笑……這些也就算了,畢竟你們還都是同類,都是活生生的人。可是,你若是被 Linux 終端給嘲笑了,你的心裏會是什麼感覺?
[alvin@VM_0_16_centos ~]$ sldkf
Why are you doing this to me?!
-bash: sldkf: command not found
[alvin@VM_0_16_centos ~]$ iehf
You are not as bad as people say, you are much, much worse.
-bash: iehf: command not found
[alvin@VM_0_16_centos ~]$ sdfas
How many times do I have to flush before you go away?
-bash: sdfas: command not found
複製代碼
Git 是用來作啥的?想必碼農朋友都知道,Git 是版本控制軟件,是軟件開發過程當中團隊協做不可或缺的軟件。可是,做爲版本控制軟件的 Git ,能跟聊天工具扯上關係嗎?這兩者彷佛毫無關係,但腦洞大開的外國朋友活生生將 Git 改形成了一個聊天工具!
等等相似於此類的應用,這些應用雖然不是學習過程當中的必需品,但卻能夠給咱們的學習生活帶來不少樂趣!
7. Git
做爲程序員,確定不是離開Git。Git是版本控制軟件,是軟件開發過程當中團隊協做不可或缺的軟件。但可悲的是,在學校裏不多會有Git相關課程,因此不少大學生都不知道有Git這個東西。
對於Git的入門,建議看 Pro Git 這本書,它是一本免費開源書,在它的官網上就能夠直接在線閱讀。
Git雖然命令也不少,但基本的經常使用的也沒幾個。在使用Git的過程當中,咱們也要注意一些 Git 提交規範。
使用Git,就不得不提到GitHub。GitHub是一個面向開源及私有軟件項目的託管平臺,由於只支持git 做爲惟一的版本庫格式進行託管,故名GitHub。因爲開發人員多爲男性,故又名GayHub……
不少小夥伴知道使用Git,殊不知道如何在GitHub上與其餘小夥伴一塊兒協做,爲此我特意寫了一篇文章來介紹GitHub的協做方法:
除此以外,還有你必須收藏的 GitHub 技巧
Linux博大精深,絕非一篇文章就能講透的。本文根據本身的一些經驗,介紹了一些方向性的東西。你們若是按着這些方向去學習,也必定會成爲大神!
在公衆號「良許Linux」後臺回覆「簡書」便可免費獲取。
❤️ 看完三件事: 若是你以爲這篇內容對你挺有啓發,我想邀請你幫我三個忙: