寫給 Linux 初學者的一封信

你們好,我是肖邦html

這篇文章是寫給 Linux 初學者的,我會分享一些做爲初學者應該知道的一些東西,這些內容都是本人從事 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 環境,也不會影響宿主機的正常使用。對於虛擬機軟件的選擇,能夠考慮使用 VMwareVirtualBox 。虛擬機的快照功能必定要用好,尤爲是對新手來講,它能夠將你不當心搞壞的環境恢復到初始化狀態,就像是從新安裝了操做系統同樣,今後媽媽不再用擔憂我 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.對生產環境必定要有敬畏心

如何學習?

高效的學習方法每每可以幫助你事半功倍,下邊是我分享的一些本身的學習心得和方法,但願對你們有幫助。windows

  • 必定要多實踐。Linux 是一門實操性很是強的學科,初學者須要多敲命令,多實踐和練習。與學習其它東西是同樣的,大多時候咱們不須要非得先將理論知識學的通透後纔來實踐動手,而是從實踐中發現問題後再深度學習,這樣效果可能會更好。
  • 有效的學習方式。說到學習方式,每一個人學習的方式可能不太同樣。我推薦 視頻 + 看書 的方式,視頻教程可讓你快速上手,快速瞭解相關的概念,而看書能夠更加全面的學習具體的細節,會讓你有更多的思考,看書能夠做爲視頻的補充和擴展。
  • 思考,總結與概括。無論以什麼形式來學習,咱們都須要對學習中的每一個問題和概念認真思考,須要從 whathowwhy 三個角度進行學習,做爲學習的問題模板。學習任何新技術,咱們都須要知道這個技術知識點的應用場景,以及可以解決什麼問題,是否有相似的解決方案,此技術點有什麼優點
  • 輸出是一種高效學習方法。在學習過程當中,必不可少的一個環節就是概括和總結,總結就要輸出,能夠是文檔形式的筆記或者其它。我比較推薦寫博客,有條件的話必定要寫,由於寫博客能夠幫助你更有效地、更系統的總結和學習。寫博客是一種 的形式,若是可以將本身學到的知識在博客上清晰的講清楚,教會別人,那才說明你是真正的掌握了它。若是博客寫的不錯的話也能爲本身夠積累影響力,對本身未來的求職也會有幫助。另外若是別人從你博客學習到了東西並且覺着不錯的話,會給你點贊、留言、讚揚,這都是對你寫博客和學習的正反饋,同時也可以刺激你保持學習的興奮和激情,呵呵。
  • 制定明確的學習目標。作任何事,有了目標纔可以走的更遠,少走彎路。咱們學習 Linux 也同樣,須要根據本身的實際狀況,制定適合本身的學習目標。我的建議目標不要太大,時間週期也不要太長,要切合實際,好比制定三個月的學習目標。有了目標後,就要肯定詳細的學習計劃,細化到每週須要完成的任務列表。注意,你須要爲計劃任務指定結果檢驗的方式,好比寫一篇博客文章或是筆記,計劃真實落地纔是最困難的,由於執行力是一種稀缺資源。
  • 堅持與激情,得到正反饋。學習是一件逆人性的事情,大部分人在遇到諸多問題後就很容易會放棄。1.合理的學習計劃和結果輸出,可以讓你繼續保持學習的激情;2.寫博客、討論交流等方式也能夠得到正向的反饋,從而激勵着你繼續向前;3.堅持學習也可以幫你養成良好的習慣,無形中提升本身的執行力,我的認爲這些收穫可能遠比具體的技術知識更加劇要。
  • 如何解決問題。在學習 Linux 技術的時候,初學者確定會遇到各類 奇怪 的問題,面對這些問題時,咱們要學會分析錯誤信息,嘗試以目前學習到的技術來思考找答案,若是解決不了,可使用搜索引擎,對於初學者遇到的問題,百度通常都可以解決。若是實在解決不了,能夠請教身邊的高手,不過提問問題時,必定要描述清楚問題,帶着謙虛請教的態度。

應該學習的基礎知識

Linux 系統涉及的技術知識點很是普遍,學習者能夠根據本身的實際狀況,選擇相應的主題方向進行學習,不可盲目的跟隨他人的學習路線,有可能拔苗助長,學習效果事倍功半,得不償失,因此選擇適合本身的學習路線很是重要。後端

由於每一個人未來從事的工做和方向不一樣,須要重點學習的內容也不同,並且本文目標也只是分享給 Linux 初學者一些實用的經驗心得,因此後邊內容中只簡單羅列了最通用和實用的一些技術,這些是學習 Linux 技術的全部同窗都應該知道的技術知識點。centos

  • 學習 vim。在 Linux 系統下,基本沒有什麼能夠與之競爭的編輯器(不接受反駁),你只須要花費 1-2 天的時間來熟悉 vim 的基本使用操做便可,無需研究那些高大上的各類插件使用技巧。要知道 vim 的學習是有難度的,不過一旦熟練使用後,就會駕輕就熟,能極大提升編輯效率。這裏推薦陳皓的《簡明 vim 練級攻略》。
  • 簡單的文件管理。這些都是一些很是基礎的操做與文件的管理命令,如:lslessheadtaildudfln 等,固然 find 是查找文件的很是有用的命令,功能很是強大。
  • 基礎的網絡管理。經常使用的網絡管理命令,必定要學會使用,這對平時工做或學習時的網絡診斷和網絡配置很是有用。好比 ipifconfig 等網絡命令,還有網絡診斷工具 netstatpingtraceroute 等。
  • 學些 shell 腳本編程。咱們知道 Linux 特色之一就是命令行,上邊咱們說過,命令行就意味着能夠自動化,自動化後就可以規模化。shell 腳本就是咱們實現自動化的最有效的方式,由於 shell 程序是最擅長與 Linux 內核打交道的。咱們能夠利用 shell 腳本幫咱們作不少重複性的工做,來釋放咱們工程師的雙手去創造更大的價值。
  • 熟悉做業管理。咱們須要常常在命令行終端上管理應用程序,啓動或關閉程序。你須要知道這些概念,如:進程、進程組、會話、終端,學會使用 jobsfgbgkillCtrl-CCtrl-Z,以及信號的相關操做,須要知道 kill -9 究竟是在幹什麼。
  • 學習使用軟件包的管理。國內最經常使用的 Linux 發行版是 ubuntucentos,須要學會使用 apt-getyum 命令來查找和安裝相關的軟件包,固然也要學會試着從源碼編譯方式安裝軟件。
  • 學習簡單的數據處理。咱們在工做和學習中也會常常須要處理文本信息,Linux 在這方面提供了不少的工具,組合起來可以很是方便的實現強大的功能。常見的命令 sortuniqcutsplit,還有 Linux 經典的三劍客 sedawkgrep,這三個工具都是上古神器,功能很是強大,awk 還有專門的書籍來說解它,可見功能之強大與複雜,咱們初學者只須要熟練掌握一些經常使用的功能便可。
  • 學會看文檔。雖然不是具體的技術知識,但它卻很是重要,初學者在學習命令時老是但願能記住全部的參數和選項,其實這些參數咱們不須要記憶(大腦是用來思考的而不是存儲的),咱們能夠經過 Linux 手冊來查看,一般使用 man ifconfig 就可以查看該命令的官方文檔說明,既準確又清晰。固然在遇到問題時,也能夠查看手冊來確認命令的使用方法是否正確。

Linux 系統涉及的技術知識點很是複雜,上述所分享的僅是一些必學基礎知識,若是可以認真學習並夠掌握好,基本上算是入門 Linux(存活的級別)。若是你是運維方向,至少須要更深刻的學習:用戶管理、磁盤管理、系統平常管理、常見服務的搭建、高可用集羣、系統監控等運維知識;若是你是後臺開發方向,至少須要更深刻學些 Linux 操做系統、進程與線程、進程間通訊、信號、網絡編程、系統調用、Linux 內核等知識;若是你是嵌入式方向,你至少須要深刻研究 Linux 內核源碼、設備驅動程序了。

本篇文章到此結束,後邊還會更新 Linux 系列文章,文章內容風格會盡可能保持通俗易懂、重實踐和實用性,儘量地幫助到有須要的同窗,若是感興趣的話,能夠繼續關注後續 Linux 系列文章。

謝謝你們,我是肖邦,歡迎關注後續的精彩分享。

相關文章
相關標籤/搜索