這篇文章是寫給 Linux 初學者的,我會分享一些做爲初學者應該知道的一些東西,這些內容都是本人從事 Linux 開發工做多年的心得體會,相信會對初學者有所幫助。若是你是 Linux 老鳥,那可能就不須要再往下看了前端
linux
爲啥要學Linux
做爲從事 IT 工做的同窗,對 Linux 系統必定不陌生。現在咱們在各類領域都能看獲得它的身影,好比,手機、服務器、嵌入式、電信設備、大型計算機,以及各類電子類產品都離不開 Linux,它已經滲透到互聯網世界的方方面面了。linux
包括那些火熱的技術,好比雲計算、虛擬化、容器、大數據、人工智能,幾乎都是基於 Linux 技術的,那些平臺系統,電商、團購、社交、新聞、快遞,都是部署在服務器端,也幾乎都是基於 Linux 技術的。shell
在編程的世界中,Linux 就是主流,不會 Linux 你就可能會格格不入。若是你想進大公司,想學新技術,Linux 必定是一道繞不過去的砍,只有進入了 Linux 系統這扇大門,你纔可能成爲合格的軟件工程師。編程
企業服務器環境絕大部分都是 Linux 系統,因此無論你是從事前端、後端、運維、測試中的哪一類工做,Linux 都是你必須掌握的基礎知識,只是不一樣類型工做須要學習 Linux 的方向不一樣而已。ubuntu
經驗與建議
下邊分享的內容是本人從事 Linux 開發多年的一些經驗總結,相信對 Linux 初學者會有所幫助,固然若是有不許確的地方,還請指正。vim
必定要本身搭建Linux環境。Linux 系統學習是很重實踐的,僅學習理論知識是不能真正掌握 Linux 的。我推薦在我的電腦上安裝虛擬機,虛擬機的方式很是靈活,既能夠提供 Linux 環境,也不會影響宿主機的正常使用。對於虛擬機軟件的選擇,能夠考慮使用 VMware 或 VirtualBox 。虛擬機的快照功能必定要用好,尤爲是對新手來講,它能夠將你不當心搞壞的環境恢復到初始化狀態,就像是從新安裝了操做系統同樣,今後媽媽不再用擔憂我 rm -rf /* 了。
Linux發行版的選擇。因爲 Linux 的強大,目前存在太多的發行版本了,有些同窗在選擇上可能會有些糾結。這裏我推薦選擇使用 CentOS 就行,因爲免費且穩定,國內企業服務器使用最多的就是 CentOS 了,使用上和 RedHat 幾乎沒有什麼區別。固然你能夠選擇 Ubuntu 系統,國內服務器使用份額僅次於 CentOS。其實全部發行版都是基於 Linux 內核的,只是擴展了相關的系統組件和軟件庫,本質上都是 Linux 系統,學會了 CentOS 後就很容易上手其它版本的系統了,因此無需太關注和糾結這個問題。
必定要使用命令行。大部分初學者常常喜歡安裝圖形桌面,由於咱們以前都習慣了 win 或 mac 的圖形操做。但我強烈建議,安裝系統時不要安裝桌面,平時的操做和學習都堅持使用命令行。學習前期可能會比較痛苦,但熬過了陣痛期,熟練使用以後,就能享受到命令行帶來的強大功能。命令行不只功能強大,並且能夠極大的提升效率,由於命令行就意味着可以自動化,自動化能爲你釋放不少重複性的工做,讓你有充足的時間去學習更有價值的知識。另外,圖形界面在 linux 系統上做爲一個獨立軟件存在,會額外消耗服務器的資源,企業的服務器必定是不會安裝圖形的,因此須要你必定要在 Linux 世界中忘掉 windows 的思惟方式。
Linux 是開源的。開源意味着你可以查看 Linux 源碼,能夠從代碼層面理解系統實現的原理,這些可讓你達到一通百通、醍醐灌頂的效果,而不是簡單的使用它。
養成安全嚴謹的良好習慣。對於初學者來講,雖然大部分時間是在虛擬機上操做,有快照的加持,能夠毫無顧忌的進行各類實驗性的操做。但我仍是強烈建議初學者必定要養成良好的操做習慣:1.常常備份重要的數據;2.少用 root 用戶進行各類操做;3.敲命令不是越快越好;4.服務器密碼儘量的複雜些,不要使用 123456 這類弱密碼,服務器極可能被侵入當肉雞;5.服務器密碼不要簡單記錄在文檔上或 U 盤之類的移動設備上;6.對生產環境必定要有敬畏心。
制定明確的學習目標。作任何事,有了目標纔可以走的更遠,少走彎路。咱們學習 Linux 也同樣,須要根據本身的實際狀況,制定適合本身的學習目標。我的建議目標不要太大,時間週期也不要太長,要切合實際,好比制定三個月的學習目標。有了目標後,就要肯定詳細的學習計劃,細化到每週須要完成的任務列表。注意,你須要爲計劃任務指定結果檢驗的方式,好比寫一篇博客文章或是筆記,計劃真實落地纔是最困難的,由於執行力是一種稀缺資源。
如何解決問題。在學習 Linux 技術的時候,初學者確定會遇到各類 奇怪 的問題,面對這些問題時,咱們要學會分析錯誤信息,嘗試以目前學習到的技術來思考找答案,若是解決不了,可使用搜索引擎,對於初學者遇到的問題,百度通常都可以解決。若是實在解決不了,能夠請教身邊的高手,不過提問問題時,必定要描述清楚問題,帶着謙虛請教的態度。
應該學習的基礎知識
Linux 系統涉及的技術知識點很是普遍,學習者能夠根據本身的實際狀況,選擇相應的主題方向進行學習,不可盲目的跟隨他人的學習路線,有可能拔苗助長,學習效果事倍功半,得不償失,因此選擇適合本身的學習路線很是重要。後端
由於每一個人未來從事的工做和方向不一樣,須要重點學習的內容也不同,並且本文目標也只是分享給 Linux 初學者一些實用的經驗心得,因此後邊內容中只簡單羅列了最通用和實用的一些技術,這些是學習 Linux 技術的全部同窗都應該知道的技術知識點。centos
學習 vim。在 Linux 系統下,基本沒有什麼能夠與之競爭的編輯器(不接受反駁),你只須要花費 1-2 天的時間來熟悉 vim 的基本使用操做便可,無需研究那些高大上的各類插件使用技巧。要知道 vim 的學習是有難度的,不過一旦熟練使用後,就會駕輕就熟,能極大提升編輯效率。這裏推薦陳皓的《簡明 vim 練級攻略》。
學習使用軟件包的管理。國內最經常使用的 Linux 發行版是 ubuntu、centos,須要學會使用 apt-get、yum 命令來查找和安裝相關的軟件包,固然也要學會試着從源碼編譯方式安裝軟件。
學習簡單的數據處理。咱們在工做和學習中也會常常須要處理文本信息,Linux 在這方面提供了不少的工具,組合起來可以很是方便的實現強大的功能。常見的命令 sort、uniq、cut、split,還有 Linux 經典的三劍客 sed、awk、grep,這三個工具都是上古神器,功能很是強大,awk 還有專門的書籍來說解它,可見功能之強大與複雜,咱們初學者只須要熟練掌握一些經常使用的功能便可。
學會看文檔。雖然不是具體的技術知識,但它卻很是重要,初學者在學習命令時老是但願能記住全部的參數和選項,其實這些參數咱們不須要記憶(大腦是用來思考的而不是存儲的),咱們能夠經過 Linux 手冊來查看,一般使用 man ifconfig 就可以查看該命令的官方文檔說明,既準確又清晰。固然在遇到問題時,也能夠查看手冊來確認命令的使用方法是否正確。
Linux 系統涉及的技術知識點很是複雜,上述所分享的僅是一些必學基礎知識,若是可以認真學習並夠掌握好,基本上算是入門 Linux(存活的級別)。若是你是運維方向,至少須要更深刻的學習:用戶管理、磁盤管理、系統平常管理、常見服務的搭建、高可用集羣、系統監控等運維知識;若是你是後臺開發方向,至少須要更深刻學些 Linux 操做系統、進程與線程、進程間通訊、信號、網絡編程、系統調用、Linux 內核等知識;若是你是嵌入式方向,你至少須要深刻研究 Linux 內核源碼、設備驅動程序了。
本篇文章到此結束,後邊還會更新 Linux 系列文章,文章內容風格會盡可能保持通俗易懂、重實踐和實用性,儘量地幫助到有須要的同窗,若是感興趣的話,能夠繼續關注後續 Linux 系列文章。