開學大二了 ,學了幾周的Linux伺服器搭建與管理 但我現在連基本的操作也不會 為什麼Linux那麼難學?


因為你學得是伺服器的搭建與管理。

linux伺服器叫難,windows伺服器那就叫不是人乾的事了。


剛上手的時候估計會沒有方向

建議你買一本Linux的書籍看看

推薦 "鳥哥的私房菜 Linux系列

買那本入門的先看看

至於自己的電腦上可以裝一個虛擬機 再裝Linux 這樣就不用再佔用一台電腦學Linux了

虛擬機下載安裝 網上有很多 baidu 下吧

最後祝你成功!


你問一個外國程序員,Linux和中文哪個難? 為啥你中文學得比Linux好?

賣油翁曰:「我亦無他,惟手熟爾。「


會者不難,難者不會,不是Linux難,只是你不會而已。

在操作系統裡面,Linux是最容易的了,不要以為Windows或者Mac容易,她們只是操作容易,

而操作容易是以更為複雜的內部機製為代價的。而Linux還是徹底開源的,你可以了解它的一切。

學習要循序漸進,不可以急功近利,一口吃不成胖子。


?我在100ASK_IMX6ULL售後群里,發現很多初學者只有單片機基礎,甚至沒有單片機基礎。在學習Linux時,對很多概念比較陌生,導致不知道學什麼,也不知道學了之後有什麼用。

從事嵌入式Linux培訓12年來,我們寫過很多《關於如何學習linux》的文章,這是最新的,本文將不斷更新。

  • 新學習路線、視頻介紹、資料下載(免費視頻): https://www.100ask.net/detail/p_5f18007de4b0df48afbcd477/6
  • 嵌入式Linux應用開發基礎知識(免費視頻): https://www.100ask.net/detail/p_5f338ae3e4b075dc42ad44a1/8
  • 嵌入式Linux驅動開發基礎知識(免費視頻): https://www.100ask.net/detail/p_5f1aa2dde4b0df48afbd775f/8
  • 嵌入式Linxu實戰項目(免費視頻): https://www.100ask.net/detail/p_5f181e8fe4b0df48afbce201/8

第1章 單片機和Linux的區別

1.1 有哪些產品使用單片機或Linux

  • 所有的電子產品,所用技術都可以認為要麼是單片機,要麼是Linux;GUI方面主要是QT/Android,它們都是運行於Linux之上的。
  • 也許你不服!不是還有ucos、vxwork、wince、IOS嗎?下面這個圖是關於操作系統的佔比,是2016年的,我沒找到更新的圖,但是很有參考意義:
  • 我們說的單片機不使用操作系統,在上圖中沒有體現出來。但是使用單片機設備肯定遠遠超過Linux。很多人也是先學習單片機,從單片機進入電子工程師行業
  • 日常生活中,有哪些產品使用單片機、Linux呢?下面舉一些例子:

  • 我們設計一個產品時,是使用單片機還是Linux,取決於成本:硬體成本、軟體成本、維護成本、升級成本。而不應該根據個人偏好來選擇:我喜歡單片機,所以就排斥使用Linux;我喜歡Linux,就排斥使用單片機。為了有更多的選擇,我們需要既懂單片機,又懂Linux。

1.2 在硬體操作上單片機和Linux是類似的

  • 以點燈為例, 無論是單片機還是Linux,我們要做的事情都一樣:
  • 看原理圖,確定引腳是哪一個,確定它輸出什麼電平才可以
  • 看晶元手冊,確定要怎麼操作寄存器
  • 寫程序

但是,怎麼編寫程序,單片機和Linux有很大不同。

1.3 在單片機中點燈、使用LCD

  • 使用單片機開發程序時,我們一上來就寫一個main函數,下面是一些簡化的代碼:

  • LED程序裡面的init_led、led_on、led_off函數是你一個人寫的,愛取什麼名就取什麼名,愛怎麼寫就怎麼寫。
  • LCD程序里的函數也是你寫的,完全是自由發揮。
  • 很多單片機項目不是很複雜,2、3個人從上到下統統搞定,裡面的函數大多時間是直接去讀寫寄存器。
  • 很多單片機項目嚴重依賴於硬體,換一個晶元後怎麼辦?重寫一套代碼唄。
  • 在單片機程序里,沒有應用程序、驅動程序的概念,很可能一個人包攬了硬體設計、模塊調試(或稱之為驅動)、功能開發(或稱之為應用)的全部活。

1.4 在Linux中點燈、使用LCD

  • 在Linux中,不允許應用開發人員直接去操作硬體,比如你想點個燈,不好意思,你無法直接訪問寄存器;你需要通過驅動程序來訪問寄存器。
  • 為什麼?有幾大原因:
  • Linux系統中運行著眾多程序,必須保證質量差的程序無法破壞系統: 假設你寫的程序比較爛,那我不能讓你去隨便訪問寄存器,把系統搞崩潰了怎麼辦?你本意是去點燈,但是你看錯了寄存器,你把電源關了怎麼辦? 所以這些操作硬體的活,還是交給信得過的人來做吧:交給驅動工程師,他既懂硬體又懂軟體。
  • 保證程序的可移植性: 編寫應用程序時,大家都使用統一的函數,以後換一個晶元時,應用程序不用變;只需要根據這個介面提供驅動程序就可以了。
  • 團隊協作: 使用Linux系統的項目一般比較大,術業有專攻,一個人不太可能從上到下都全部掌握。比如做人臉識別項目,有擅長做圖像處理的,他可不管你要用多少種攝像頭,有圖像給他就可以。而多種攝像頭的硬體操作方法各有不同,這些交給驅動程序工程師。
  • 所以,在Linux中應用程序和驅動程序是分開的。
  • 以LED、LCD程序為例,簡化的代碼如下:

  • 也許你已經大概猜出來了,應用程序怎麼調用驅動程序?通過標準的介面:
  • open: 打開驅動程序。
  • read/write: 讀、寫數據。
  • ioctl: 傳入各種參數,獲得各種參數。
  • mmap: 內存映射,比如映射之後,應用程序可以直接讀寫LCD的顯存。
  • 你看!從這些介面里,我們根本看不到寄存器的操作。底層的程序驅動會根據這些調用,去設置寄存器、操作硬體。
  • 所以,我高大上的應用工程師,幹嘛苦哈哈地去看原理圖、看在片手冊、讀寫寄存器,搞不好還要去調試硬體BUG。這些臟活、累活就交給驅動工程師吧。客戶的需求千變萬化,我996時間都不夠用了。
  • 我上懂軟體、下懂硬體的驅動工程師,肯定不能把這麼重要的活交給你去做了,把我的系統搞崩潰了怎麼辦。
  • 開玩笑、開玩笑、開玩笑的,有應用工程師、驅動工程師的優劣之分,大家都是為了做出產品。現在有一個趨勢,一個任務從上到下你都需要懂,這就是所謂的全棧工程師。
  • 還是以LED為例,應用程序和驅動程序的協作如下圖所示:
  • 在Linux中,「一切皆文件」,要訪問某個硬體,也是要打開文件、讀寫文件。應用程序要根據標準的文件介面:open/read/write/ioctl/mmap等來訪問驅動程序。
  • 既然如此,怎麼寫驅動程序呢?最簡單的方法就是:APP要調用open來打開驅動程序,那驅動『程序里就提供一個xxx_open函數來初始化硬體;APP要調用write來寫數據,驅動程序里就提供一個xxx_write函數來接收數據並操作硬體。
  • 用xxx_open、xxx_write來構成一個驅動程序,這就是驅動框架。
  • 怎麼實現這些xxx_open、xxx_write函數?我們要做的事情跟單片機是類似的,一樣要去看電路圖、看晶元手冊,然後在這些函數里讀寫寄存器:這稱為硬體操作
  • 所以,Linux驅動程序= 驅動框架 + 硬體操作。
  • 有單片機基礎的人,對硬體操作比較熟悉了,把重點放在驅動框架上就可以。
  • 高能預警:驅動框架可不簡單,對於LED來說是簡單,但是還有更複雜的驅動程序,它要考慮「通用」,這很要命。

第2章 嵌入式Linux快速入門

  • 這幾天在群里跟學員聊天,有一位學員的學習方法很好:先觀其廣,再究其深。有時候要「不求甚解」,很多時候保持疑問先學下去,這些疑問就自然解決了。
  • 比如課程中涉及彙編知識,如果你要徹底弄清楚,你需要去學習《ARM架構與編程》;當你學完這本書,你的同學搞不好已經可以上手工作了。

2.1 短期的目標是什麼

  • 我們先把學習目標定下來:快速了解嵌入式Linux開發的流程,知道要學什麼,具備跟從業者交流的能力。

2.2 一個嵌入式Linux系統的組成

- 下面我們用類比和邏輯推導出嵌入式Linux系統的組成,沒錯,「推導」。 從上圖可以知道:

  1. 組成: 嵌入式Linux系統 = bootloader + linux內核 + 根文件系統(裡面含有APP)。
  2. bootloader: 它的目的是啟動內核,去哪等讀內核?讀到哪裡?去Flash等外設讀內核,存到內存里去。所以需要有Flash里外設的驅動能力,為了調試方便還會有網路功能。 所以,可以認為 booloader = 裸機集合,它就是一個複雜的單片機程序。
  3. Linux內核: Linux內核的最主要目的是去啟動APP,APP保存在哪裡?保存在「根文件系統」里。「根文件系統」又保存在哪裡?在Flash、SD卡等設備里,甚至可能在網路上。所以Linux內核要有這些Flash、SD卡里設備的驅動能力。

  4. 不僅如此,Linux內核還有進程調度能力、內存管理等功能。
  5. 所以:Linux內核 = 驅動集合 + 進程調度 + 內存管理等。

2.3 要學習bootloader嗎

  • Bootloader有很多種,常用的叫作u-boot。
  • 在實際工作中,對於u-boot基本上是修修改改,甚至不改。但是u-boot本身是很複雜的,比如為了便於調試,它支持網路功能;有些內核是保存在FAT32分區里,於是它要能解析FAT32分區,讀FAT32分區的文件。
  • 花那麼多精力去學習u-boot,但是工作中基本用不到,這對初學者很不友善。
  • 所以,對於初學者,我建議:理解u-boot的作用、會使用u-boot的命令,這就可以了
  • 如果你的工作就是修改、完善bootloader,那麼再去研究它吧。

2.4 要學習Linux內核、要學習驅動程序嗎

  • 之前我們說過Linux內核 = 驅動集合 + 進程調度 + 內存管理等,如果要學習Linux內核,從驅動程序入手是一個好辦法。
  • 但是人人都要學習Linux內核、人人都要學習Linux驅動嗎?顯然不是。
  • 作為初學者,懂幾個簡單的驅動程序,有利於工作交流;理解中斷、進程、線程的概念,無論是對驅動開發、應用程序開發,都是很有好處的。
  • 所以對於初學者,建議前期只學習這幾個驅動:LED、按鍵、中斷。
  • LED驅動程序: 這是最簡單的驅動程序。
  • 按鍵驅動程序: 它也比較簡單,從它引入「中斷」
  • 中斷: 從「中斷」它可以引入:休眠-喚醒、進程/線程、POLL機制、非同步通知等概念。這些概念無論是對驅動開發,還是對應用開發,都很重要。
  • 所以,對於初學者,我建議必須學習這幾個驅動:LED、按鍵、中斷。
  • 入門之後,如果你想從事內核開發、驅動開發,那麼可以去鑽研幾個驅動程序(輸入系統、I2C匯流排、SPI匯流排等),掌握若干個大型驅動程序後,你對內核的套路就有所了解了,再去研究其他部分(比如進程管理、文件系統)時你會發現套路是如此通用。
  • 攝像頭(VL42)、音效卡ALSA驅動是Linux中比較複雜的2類驅動,它們是很難的,如果工作與此相關再去研究。

2.5,要學習Linux應用程序嗎?先學一些基礎技能

  • 要學,即使以後你只想研究內核,一些基本的應用開發編寫能力也是需要的:
  • 基本設備的訪問,比如LCD、輸入設備
  • 進程、線程、進程通信、線程同步與互斥
  • 休眠-喚醒、POLL機制、信號
  • 網路編程
  • ①②③部分的知識,跟驅動有密切的關係,它們是相輔相承的。

  • 掌握了基本驅動開發能力、基本應用開發能力之後,在工作中你就可以跟別人友好溝通了,不至於一臉懵逼。

2.6,應用程序是怎麼啟動的?要了解一下根文件系統

  • 你辛辛苦苦寫出了應用程序,怎麼把它放到板子上,讓它開機就自動啟動?
  • 你寫的程序,它依賴於哪些庫,這些庫放到板子上哪個目錄?
  • 怎麼做一個可升級的系統?即使升級中途斷電了,也要保證程序至少還可以運行老的版本?
  • 這些都需要我們了解一下根文件系統。
  • 先了解一下init進程:它要讀取配置文件,根據配置文件啟動各個APP。
  • 了解了init進程,你就了解了根文件系統的組成,就可以隨心所欲裁剪系統,為你的項目製作出最精簡的系統。

第3章 學習方法

3.1,先不要打破砂鍋問到底

  • 嵌入式涉及的東西太多太雜了,如果心裡沒有主線,碰到什麼都要去研究個透徹,最終反而忘記自己要學什麼了。
  • 嵌入式涉及硬體知識、軟體知識,軟體里涉及彙編、ARM架構、C語言、Makefile、Shell;又分為bootloader、內核、驅動、基本的APP、GUI。
  • 比如我們會用到Makefile,了解它的基本規則,會用我們提供的Makefile就可以。
  • 不需要深入研究那些make函數,因為在工作中都有現成的Makefile給你使用,不需要自己去編寫一套Makefile。何必花上好幾天去深入研究它呢?
  • 比如我們會用到bootloader,難道又要花上幾個月來深入研究u-boot嗎?工作中基本不需要改u-boot,會用那幾個命令就可以。
  • 甚至有些學員先去買本shell的書來學習shell命令,何必?我們在視頻中用到什麼命令,你不懂時再去百度一下這些命令就可以了。
  • 不要脫離初學者的主線:應用基礎、驅動基礎。有了這2個基礎後,你想深入研究某部分時,再去花時間吧。

3.2,思路要清晰,不怕抄代碼

  • 視頻里的代碼,請你一定要自己去寫一次、寫多次。為什麼我現在寫驅動那麼熟?我2009年在華清遠見上課時,
  • 每次上課我都要給學生寫一次那些驅動,十幾次下來閉著眼睛都知道內核的套路了。
  • 記不住那些函數?我也記不住,我都是去參考同類的驅動程序,這又不是閉卷考試。
  • 但是要理清楚思路,你寫這個程序要完成什麼功能、怎麼實現這些功能?這個要弄清楚。
  • 有了思路後再寫代碼,不知道怎麼寫?沒關係,看看視頻,看看示例,然後關閉視頻看看能否自己寫出來。

3.3,對自己的方向很了解,我只能帶你到這裡了

  • 我的專長是操作系統,是快速地帶領大家掌握一些項目開發的基礎知識。
  • 如果你決定深入研究某方面時,我並不能帶你多久。你要去看源碼,去看這方面的專業書籍。
  • 比如想深入鑽研內核的內存管理時,它有頁表映射(你需要閱讀ARM架構的手冊)、SLAB分配器、vmalloc/malloc實現、mmap實現、缺頁中斷、父進程子進程之間的頁面管理等等,內容非常多。有時候連書籍都沒有,你需要直接啃代碼。
  • 當你想從事某個行業時,就需要深入研究行業相關的知識。
  • 比如CAN匯流排,它可以寫成一本書:CAN協議、CAN報文、Socket CAN、車身網路拓撲結構,CAN應用報文,CAN網路管理報文,CAN診斷報文。
  • 想做物聯網網關,需要深入研究MQTT,MQTT協議相對簡單,但是MQTT英文原版協議有130多頁,中文版有近100頁,是一本小書了。
  • 每個行業都有自己的業務邏輯,在掌握基本的編程能力之一,你需要結合具體的業務去深入學習。

  • 百問網技術論壇: http://bbs.100ask.net/
  • 百問網官方wiki(資料下載): http://wiki.100ask.org/
  • 線上課堂: https://www.100ask.net/index
  • 百問網開發板: 淘寶:https://100ask.taobao.com/ 天貓:https://weidongshan.tmall.com/
  • 技術交流群(鴻蒙開發/Linux/嵌入式/驅動/資料下載) QQ群:869222007
  • 單片機-嵌入式Linux交流群: QQ群:536785813

http://weixin.qq.com/r/M0hvd2-EwjK9rSsU9x0h (二維碼自動識別)

百問科技公眾號


你好

關於Linux學習,有幾點建議:

1.不要死記,不要死記

2.理解,加操作,加筆記

3.就當是使用一個系統,不要去當作學習

4.理解服務是幹什麼的,在去理解怎麼使用命令讓他起來,為你自己服務

歡迎關注Linux雲計算公開課:

MK-Linux/高級運維/2020雲計算/架構師/mysql資料庫/centos7教程-學習視頻教程-騰訊課堂

發佈於 2020-11-10繼續瀏覽內容知乎發現更大的世界打開Chrome繼續iyacontroliyacontrol專註kubernetes,istio等雲原生

根據題主所問的意思,處於熟悉linux階段。偏向於linux運維,所以,無他,唯手熟爾。


根據題主所問的意思,處於熟悉linux階段。偏向於linux運維,所以,無他,唯手熟爾。


Linux不難只是shell指令多,多練練就記住了


學linux難嗎?是 Linux初學者經常會問的問題,其實Linux和Windows一樣都屬於操作系統,對於大部分人來說,對Windows操作系統十分熟悉,而對Linux操作系統沒有使用過,所以覺得很難,其實,只要熟練掌握其操作命令和一些系統規則,就可以像使用Windows一樣可以輕鬆使用Linux操作系統!

想要學好Linux,需要具備以下能力:

1. 基本功要紮實

學習任何一種語言,必備的基本功是必須要有的,一方面可以提高效率,另一方面可以拓寬思路。

對於Linux基本知識的學習,對一些初學者來說是枯燥乏味的,可以通過理解再背誦的方式先進行代碼及語法的學習,然後進行實踐操作,必須手動輸入命令行,不要藉助工具,這樣可以更快速有效的掌握Linux。

2. 學以致用

Linux學習的目的是應用,Linux基本知識是一些零散的技術,當沒有應用在項目上時,我們無法理解他的真實價值,所以打好基本功之後,最緊迫的是多做幾個完整的項目,剛開始可以是功能簡單的項目,之後可以選擇稍微複雜的項目,勤於動手,敢於實踐,一定能學好Linux。

3. 學會使用Linux聯機幫助

任何一種教材都不會完全講述Linux知識,一般講的都是比較常用的或者是比較有代表性的知識,但是,我們在項目應用中往往有些功能的實現是需要一些生僻知識和技能的,那麼,如何查找我們所需的知識呢,推薦查閱Linux幫助文檔,主流的Linux都自帶詳細的幫助文檔,很方便解決問題!

4. 在網上找資源

在Linux的學習和應用中,難免會遇到一些沒有思路、不知道如何解決的問題,這時就要藉助網路力量,可以通過搜索引擎搜索查找,也可以諮詢資深技術人員,最終實現問題的解決,這是Linux知識積累的一個重要的途徑!

5. 查閱英文技術文檔

如果想深入學習Linux,查閱英文技術文檔是十分必要的,往往最新的技術都是採用英文文檔的方式發布的,而且更全面,因此,對於Linux人員來說,多看一些Linux技術文檔,對於掌握前沿技術和加深知識是十分有必要的!

Linux學習是一個需要長期堅持不懈的過程,新的技術不斷的產生,要想成為Linux大牛,必須要時刻關注Linux發展動態,掌握最新技術,才能走在行業前列!


其實,沒有你相像的這麼難,學習Linux 它是一個積累的過程,要從最基礎的知識點開始,而不是上來就搞什麼服務部署。

我自己也是0起步學的,然後現在我據自己的自學經驗與工作經驗總結出一套《升職加薪必備!運維工程師打怪升級進階成神之路》,你可以看看。希望能幫到你!!

一定要步步為營,從最基礎的開始,多練、多操作、多總結,看著別人的步驟來操作出來的結果,不加以總結,始終是別人的東西,時間一長,你還是不會。


linux為什麼那麼難

是的,linux是很難很難那種.因為linux涉及到的東西太多了.

題主說的linux伺服器搭建與管理 只不過是 軟體的安裝,配置,管理 罷了 .只是linux其中的一部分

題主 學了幾周的Linux伺服器搭建與管理 但現在連基本的操作也不會, 我盲猜是因為沒有練習.是的,學linux是要手的.

linux 從 不同的角度 來分類,都可以分為很多很多

舉個栗子

1.架構 (x86/arm)

2.行業 (嵌入式/運維/應用開發)

3.linux架構 (內存管理/進程調度/進程通信/文件系統/網路)

且這裡面每個部分都不是一般的量級

我現在做了5年的嵌入式開發,總覺得自己做的不是很好.我後來分析發現,是沒有技術路線的問題

所以,我現在認為技術路線很重要.

就嵌入式開發來說

通用:

1. 做一個 基於 x86-linux 的系統,做多個基於不同廠家arm晶元的 arm-linux 的系統, 比較不同(不用深入細節,慢慢感受,總結機器啟動流程,分析各軟體的界限)

2. 熟悉 對系統資源的探測

linux:

1. 熟悉 linux 啟動過程

2. 熟悉 linux 內存管理

3. 熟悉 linux 其他模塊

硬體:

1. 閱讀大量的電路圖,熟悉每一個元件的作用

2. 結合電路圖 讀 大量 內核硬體相關代碼,做實驗

3. 具體外設,具體學習

4. 閱讀 arm(x86) RM 和 TRM 和 其他 arm 控制器 ip 相關手冊

應用

1. 以包管理的角度去看待每一個軟體

2. 對目標軟體進行外部探測,了解外部依賴

3. 對目標軟體進行內部分析,了解軟體實現.

4. 具體軟體實現技術具體學習

其他

具體問題,具體學習

另外,針對問題,互聯網搜索是好辦法

提升技術的方法卻不是互聯網搜索,而是看好書,做實驗,總結,討論,分享

很遺憾,好書大部分是英文書

最重要的是,認為是主線的事情一定要做,而且是抓緊做.先長高,再長胖.


還好吧。入門後就覺得沒什麼了。就跟你誕生是一回事。你要有自信。你是在千萬個蝌蚪賽跑的冠軍。為啥會怕這點難度。男主要是沒投入進去。興趣是最好老師。拿出打王者榮耀的激情去學


究其根本:Linux是為專業用戶設計的

Linux一開始就不是為桌面用戶準備的,林納斯自己本身就是一個Unix極客,他設計Linux就參考了Unix的設計哲學,也就是說Linux從一開始就是為專業用戶設計的。

不管是Unix操作系統也好,還是Linux操作系統也好,本質上都是為了提高生產效率。Linux的設計者林納斯,自己就是一個Unix極客,他是不滿意Unix當時的版權問題,於是他吸收了很多Unix的優點,在這個基礎上設計了Linux操作系統。

Linux的設計哲學,讓Linux很多場景下都需要命令行操作,並且Linux設計者並不是很鼓勵大家使用桌面,或者更合理的說法是,Linux的設計初衷是即使你要用一個桌面,也希望你能掌握好各種命令行操作,Vim/Emacs、GCC等各種軟體,都更加鼓勵大家用命令行操作。

Linux

Linux誕生的時機吧,運氣也確實不太好,我們且不說蘋果的Mac OS X,Linux在1991年的時候由林納斯開發,內核開發出來之後,1991年10月5日,林納斯將Linux V0.01版內核源代碼釋放出來供眾多的開發者進行完善,一直到93年才有10萬用戶,這些用戶也基本都是程序員,96年的時候也才350萬用戶。這個發展其實是有點太慢了,跟Windows、MacOS動輒幾千萬、上億的用戶沒辦法比。

言歸正傳,Linux只是一門基本計算機技能,它對學習者的背景、知識結構、年齡都沒啥要求,只要堅持不懈的進步,Linux沒啥學不會的。當然在學習中總會遇到瓶頸,這個時候就需要自我調節、堅持下去。學習Linux有大量的東西需要記憶,如果你懶得背、懶得學習、懶得去搞清 ,那當然會覺得難學了。還是那句話,腳踏實地,總會有所收穫。

積極的學習心態意味著好的開始

「Linux這個操作系統難用嗎?難!一片黑漆漆的命令行窗口閃爍著謎一樣的游標,本來英語就是老大難,現在竟然讓我背那麼多命令?」

「Linux這個操作系統難嗎?簡單,純命令行設計、個性化強、工作效率高、黑漆漆的窗口天生自帶神秘感。」

上面是兩種不同心態的回答,不同的學習心態必然會鑄就不同的技術水平,Linux操作系統其實非常簡單。可能你說我「英語不好,學不好Linux」,為什麼要這樣想呢?我們是學習Linux系統,又不是學習英語,所以英語不好又有什麼關係呢?當然,不可否認英語好在學習Linux的時候會起到事半功倍的作用,但英語真的不會成為學習Linux的攔路虎。就比如系統日誌一樣,臭長臭長的英文信息,但只要抓住那幾個關鍵的單詞,就已經大概可以猜出是什麼意思了,再說,你當百度、有道是吃乾飯的嗎?不要讓自己的消極心態阻攔了學習Linux的道路,重要的是一個積極的心態和不放棄的恆心。

良好的計劃讓努力X2

「什麼?沒時間學Linux?工作已經很累了,還要讓我學習?我記性不好記不住命令!!」

想提高你的收入嗎?想提高你的技術水平嗎?和上面的問題說NO!

學習任何知識都是有技巧的,最實在也是最有效的就是堅持和循序漸進,一個良好的學習方法真的是極好的呢。所以學好Linux的一個必備條件就是----制定一個好的計劃,三天打魚,兩天晒網的生活真的是你想要的嗎?不是的,你需要制定一個合適且系統的學習計劃,你口中的借口只是你懶惰的理由。比如:我要用一個月的時間裡了解簡單的Linux運行機制,學會常用的Linux命令和選項,學會文件管理、網路管理等內容的相關知識。可以把知識分為幾個小的版塊,在一點點的吃掉這些小而凌亂的知識點,如果自己基礎實在薄弱或自己沒有思路,可以在網上問問一些已經從業的Linuxer,問問到底應該學習什麼?

以我個人的經驗來看,在遇到不會或者一知半解的知識點時,先不要急著鑽研這個知識點,去睡一覺或者看看電影、看看動漫,讓自己稍微放鬆一下是沒有關係的。但!請牢記這個讓你停步的知識點,繼續進行下一步的學習計劃,隨著你的積累和眼界,這個問題在某一天就會自行解決的。

選擇好的教材讓時間/2

以自身的情況來說,我會在學習新知識前在知乎、豆瓣上搜索一些推薦的教材,這些書籍通常是經歷了一定時間的積累,而被眾多口味不一的讀者推薦一定是值得看看的。所以我們需要找一本適合自己且內容編排、作者、讀者口碑都不錯的學習教材。

雖然Linux的原理和運行機制是相通的,大多數命令也是一樣的,但你要知道,任何一本值得看的書都會進行迭代更新並且增加符合時代的知識,為防止廣告嫌疑不多做介紹,有心的同學可以自行搜索。

舉個選書錯誤的例子,有一次一個同學問我Linux的問題。他說「我照著書上安裝的服務為什麼啟動不起來?」,我瞧了瞧他手中書的目錄,寫的應該還不錯,所有考點必備知識點一應俱全。 再仔細一看,瞬間感覺尷尬了,「命令都敲錯了,怎麼能起來?是service xxx start啊」。這什麼鬼書啊,目錄、簡介說的天花亂墜,內容就是這?書上所有的啟動服務的命令都是」server xx start」,每個命令都用sudo ,簡直誤人子弟。

好的老師讓思維X3

一位好的老師非常重要,他引導著你的思想,引領著你的學習方向。一位好的老師不一定自己的技術厲害,不一定講課的內容很豐富,但好的老師一定會告訴你如何學習,以及引導你自己去學習,所以我把這種老師稱為「引導型老師」。俗話說的好「師傅領進門,修行靠個人」,所以學習這種事情還是要靠自己的,老師只能給你起到一個引領、帶頭的作用。

當然了,不是所有人都可以這麼幸運的遇見「引導型」老師或者是要自學的同學,那麼你就只能自己去引導自己了,多跟別人交流、多個別人討論,鍛煉自己思維能力的發散性,慢慢的要做到舉一反三,做完一個實驗要聯想到和其他實驗的區別,以及下次再做實驗的時候怎麼可以快速的找到幫助等等,要鍛煉自己的思考、學習、找資料的能力,這樣你的Linux學習一定會進步飛快的。

良好的環境讓學習變為享受

任何學習都是需要一個良好環境的,而環境又是由人來創建的,所以周圍的交際圈是非常重要的。簡單的例子來言,如果兩個人同時學習Linux,兩人的技術大致相同,一個人的朋友圈整天玩遊戲、整天小說電視劇,剛想做會實驗,朋友來邀請LOL了,玩遊戲還是做實驗?當然也不是說不能玩,只是說一個要有一個度,不能天天玩,這個就需要制定一個良好的計划了。而另外一個人剛做完實驗,他所接觸的朋友、網友都在學Linux,在討論這個怎麼做、那個怎麼做,有些已經有所小成的人還會幫助自己解決一些問題,那麼學習對於自己來說真的是一種享受。我們生活在一個複雜的環境里,我們有很多的朋友,和朋友交際是一件非常好的事情,但是在自己的私人時間裡一定要做一些有意義的事情,我個人的時間安排中就會為自己創造一些學習的環境,比如在百度知道中回答問題,幫助大家解決問題的同時有鍛煉了自己的技術能力;比如加入幾個有意思的論壇,看看大神們都在幹什麼;比如加入幾個技術交流群,看一下大家遇到的問題;創造一個好的環境,邏輯上將自己加入一個好的團隊,這是非常有必要且值得做的一件事。

最後贈送我整理的Linux資源:點這裡即可-下面是一些截圖工參考


Linux的理念是做好一樣事情,功能設計獨立,每一個單獨功能都是精品,所以當你要做一系列操作,例如搭建伺服器的時候,才發現很難上手,因為這是需要各種功能拼起來使用,而且還需要了解每一個單獨功能,所以會比較繁瑣,但當上手後,也就是基礎打好後,你會發覺很多功能其實都是通用的,很容易舉一反三。

所以,加油吧,後浪


慢慢來,萬事開頭有點難,後面越來越難。

Linux是一個龐大複雜的系統,匯聚了世界程序員的精華,肯定是好東西,好東西要學會,就要慢慢一點點啃。


Linux系統向下承接各種vendor的晶元,向上提供應用軟體各種posix系統調用,內核本身還提供操作系統最基礎的能力。可以說是整個萬物互聯世界的基礎,雲os,Android內核用的都是Linux內核,世界有多複雜,它就有多複雜。


先學基本命令,B站教程很多


Linux實際上是整個現代計算機工業操作系統設計的縮影,表面上看是個人項目,實際上都是整個計算機工業的參與者(如IBM,Microsoft等大企業玩家的職業開發者拿錢在那裡開發代碼,再開源出來,對,你沒有看錯就連曾經對立的微軟公司都在積極的參與開發工作,)在這種背景下,對於個人計算機玩家,對,說的就是只知道計算機是遊戲機的玩家,他會不覺得難就是真的奇怪了


沒有實際的應用場景,純粹為了學習而學習效率很低。

LINUX從理論,文件系統,網路配置,防火牆,服務配置,運維管理燈內容很多,千頭萬緒。

但是如果有時機的場景來學習就會很快,比如目標是搭建一個可以供WEB運行的環境,部署一個簡單的開源應用。如Wordpress...

就那麼多內容,掌握一點就減少一點 。實際用到的就是那麼多。


可能因為先開始學習的windows,由於先入為主,並且習慣了windows的圖形界面,所以覺得linux的命令行操作起來不方便。熟悉了用的多了就不覺得難了


推薦閱讀:
相关文章