初學 Unix/Linux 的幾點疑惑?

本人大三學生,非計算機專業,僅熟悉 Windows,現在想學 Unix/Linux(因為不知道工作中會用到哪一個),現有如下疑惑:

  • 各種發行版本的選擇對初學 Unix/Linux 是否有決定性的影響?並提出你的建議。
  • 提供一個能平穩的在 Unix/Linux 的學習中進階的步驟。
  • 對於程序員來講需要學習到什麼程度才能滿足工作需要?
  • 請按次序推薦幾本書籍(題主非計算機專業)。

謝答。


BSD 是真正的 UNIX。

BSD 官方文檔齊全。不用到處找什麼「私房菜」。

BSD 程序員是理想和現實的良好結合。

BSD 官方文檔。

以上的 BSD 包括 FreeBSD,OpenBSD 和 NetBSD。


實話實說,你需要一個CS學位才能理解Linux/UNIX,或者說,真正理解Linux/UNIX等於有了(半個)CS學位

不懂操作系統原理,不會編寫系統級軟體(內核、驅動),只會操作點Shell、文本編輯器等userland軟體(這些軟體其實大多是跨平台的),根本不叫用過Linux/UNIX,也沒有學習到什麼智慧,最多只能叫做會按使用手冊操作軟體


我沒什麼多餘的話,對於操作系統來說。我建議 Debian ! 我是從Ubuntu過渡過來的,原因是因為Debian 穩定些。 Ubuntu是Debian 系列的。apt-get 很方便!

我嘗試過轉換到RedHat系列,用過CentOS 和Fodera ,覺得apt-get 太方便了。自己懶了。安裝好後,就沒有再開啟CentOS 。

入門書籍 《鳥哥的私房菜》,當初想轉換到CentOS 也就是因為這本書。可是已經熟悉了apt的包管理方式。所以還是沒有堅持下來。

鳥哥書內容很多!從基礎-&>系統-&>部署等等都有講到。能跟著書幹完的話,已經算對Linux 上手了。

《鳥哥的私房菜》有在線版!鳥哥的Linux私房菜簡體首頁

大概了解Linux後,Linux 系統的操作和系統上面的軟體操作 大致可以說是分開的。

Linux 上的軟體,比如伺服器軟體,Apache,VIM等,無論是Debian 還是 CentOS ,都不影響其操作。也就是不管他們在什麼Linux 類系統上,操作都是一樣的。

關於Debian 和 CentOS 不同的,就是yum 和 apt 包管理方式不一樣。

第三點「 對於程序員來講需要學習到什麼程度才能滿足工作需要?」

這裡你沒有說是從事Linux開發還是Windows開發。沒問是Web開發還是後天伺服器開發。不好做答。

可以對於你感興趣的公司,感興趣的職位,去他們官網查看招聘信息。大概有需求的,看你自己能不能達到。

  • 請按次序推薦幾本書籍(題主非計算機專業)。

這個還真不好說,不知道你想要的書,是哪方面的。Windows 的還是 Linux 的? 前端的還是後台的?

想了解Linux 的話。先看看《鳥哥的私房菜》的目錄,看看有沒有你喜歡的。


  • 各種發行版本的選擇對初學Unix/Linux是否有決定性的影響?並提出你的建議。

影響不大。就我所在的行業來說,大部分伺服器使用的系統是aix和redhat as,且基本上是不會用到圖形化界面的,99%+的操作都通過ssh、telnet等方式連接到命令行下進行(在命令行下unix和linux的區別也不算太多,初學階段可忽略之)。所以樓主現在只需裝上任意一個發行版的linux,開一個terminal窗口去折騰就好了,其他的東西等你工作時會很容易觸類旁通的(包括bsd也是)。

  • 提供一個能平穩的在Unix/Linux的學習中進階的步驟。

《鳥哥的linux私房菜》,入門者極好的讀物,沒有之一。如果時間充裕,可以整本書讀完;如果想要快速入門,那就看看文件操作、shell、使用者管理這幾章,再加系統管理的前面那幾節。其實主要就是學習一些命令的調用方式,而最常用的命令似乎也就十幾個的樣子。要再進階,去學習系統配置、熟悉vi的各個快捷鍵什麼的吧。

  • 對於程序員來講需要學習到什麼程度才能滿足工作需要?

如果你把自己定位在程序員,那麼會一下幾點就基本夠應付你日常工作了:重啟和關機、文件操作、殺進程起進程、用戶增刪和許可權分配、簡單shell編寫。說實話我周圍的代碼仔很少有直接在linux下做開發的(直接乾的也就只有寫簡單shell),都是在windows下做(包括開發、調試),最後才部署到linux下來測試,他們對linux最熟悉的就是起停應用伺服器/資料庫、增刪文件。

  • 請按次序推薦幾本書籍(題主非計算機專業)。

上面已經說了。另外man命令也是在學習過程中很好的老師。實在搞不懂,上網搜索一下吧,你遇到的大部分問題一定也有人遇到過的。

最後補充一下,對非計算機專業人士來說切勿先就一頭扎進去探究原理什麼的了,先學會用,慢慢用熟練後再去橫向擴展。縱向擴展的話除非自己很有興趣,不然有系統管理員會來管這事的,自己做好應用層面就很好了。


非計算機專業想做程序員請直接學編程語言。學得卡殼了回來研究點Linux啊Vim啊Shell啊就得了。


非計算機專業,那到底是什麼專業呢? 不同的專業,不同的工作內容,對學習的要求差別好大的說……

1. 挑個主流的,沒太大差別。不過這個基本上說了也沒多大用處,很多人都會去嘗試N種發行版,等到玩累了才停手……

2. 根據自己的需求學。「使用操作系統」的範圍太廣了,根據需要來。自己設定幾個具體的目標,然後圍繞著目標去把不會的都補完。初始有幾台機器的話就不說了,沒有的話建議用虛擬機來學習使用Linux。主要是目標得具體,得是完成一件什麼事,而不是空泛的"學好」啊之類的。

3. 程序員是多種多樣的,程序員的工作也是多種多樣的。很多程序員完全不需要了解任何Linux/Unix也照樣可以工作。也有很多程序員得達到非常精通的地步才能勝任工作。而且這兩種情況之間並不能簡單地說哪種好哪種不好,分工不同而已。

4. 基本使用可以從鳥哥的文章入手,直接看他博客就行。推薦鳥哥的文章是因為他寫得很有趣,比較容易看進去。也可以自己先上手摸索,一邊用一邊查看各種網路資料,比如wiki,論壇之類的。關鍵是要學會怎麼尋找答案。基礎使用掌握之後看需求選擇更深入的內容。Shell算是個重點,bash或者自己使用的shell的基本用法得學會。shell編程的話如果想學可以去看對應的文檔。總的來說還是得看具體的需要,如果你要只想做文本處理的話那麼推薦一些網路編程啊內核實現啊也沒意思是吧……


1、 啥linux發行版對學習並不起到啥作用,我的入門系統不是linux是freebsd但這不影響學習,選擇一個靠譜的我肯定推薦rhel咯一通百通,unix是一切的基礎。

2、如何學習,先要確定目標,學習任何東西都有個3問,what?how?do?明確這幾點後對於學習會更有幫助。

3,對於程序員來說,看你使用啥語言,想往嵌入式發展要好好學習Linux c,對於程序員來說掌握linux的基本使用即可,當然包括debug技巧。

4、推薦書,我推薦讀過的<linux系統管理手冊>,<debug hacks&>,<unix高級編程>,<鳥哥私房菜>,書不再讀多少在於讀精,能把這幾本看完在輔助練習成為老鳥只是時間問題,其次把shell好好學習 下。

5,我個人想和你說的,不要玩linux要用,我見過很多基礎學習的人只知道搗鼓桌面,搗鼓不順心了就不玩了,這不是學習該有的態度。


一般人很少有用到 Unix / Linux 桌面系統的時候,而命令行 / 伺服器部分,差別有限,選擇一個支持廣泛的 Linux 發行版,安裝一個最小伺服器系統熟悉各種 shell 工具和基本系統管理方法就好。推薦 Debian 7 或者 Ubuntu 12.04,可以參考的資料比較多。

Shell 基本工具(Bash、簡單的 awk / sed 等)熟悉一下(推薦閱讀:Bash Guide for Beginners 然後 Advanced Bash-Scripting Guide )。

Vim / Emacs 至少熟悉一個的基本用法,最好兩個都能用,再考慮主要用某一個。Vim 推薦 vimtutor(是一個命令,執行之後是一個互動式教程)或 學習 vi —— 「學習清單」式 。Emacs 內置我記得有教程。

之後可以找一門相對靠譜而簡單一些的腳本語言開始學習,這裡強烈推薦 Python。以完成基本的系統管理、操作為動力學習,之後也很容易擴展到製作網路伺服器等其它多個方面。

至於要說找工作,取決於工作方向的不同需要深入的方向完全不同,有想法再說好了。


電子大三。最近剛通過了中科院軟體研究所的linux研發實習資格。說一下自己會的吧,一直用的windows,只是用過虛擬機裝過linux ubuntu。基本的工具像是vim,gcc,gdb,make用的還算熟悉。但是並沒有做過太多linux系統管理,面試的時候幾個linux命令的問題回答得不好,但是好在vim用了幾年,vim的問題全回答上來了,其他工具也比較熟悉。筆試c、c++做得比較好,所以面試官最後說看中了c、c++和演算法能力錄用了,讓我繼續學習下linux命令。所以我感覺還是基礎吧,編程、演算法基礎要紮實,工具的使用畢竟很容易就學會了,紮實的編程、演算法基礎要有一定時間 的積累。目前換了mac用了類unix系統,可以隨意使用shell了不用再用虛擬機了,然後再mac上搭建了vim+gcc+gdb+make開發環境。然後最近買了《unix環境高級編程》開始學習unix系統編程。

工作的話看你是不是研發崗位了,每個崗位要求不一樣。

書的話推薦《鳥哥的linux私房菜》 對初學者學習linux很有幫助。

《linux c編程實戰》 圖書館偶然看到的,國人寫的,感覺還不錯。可以快速入門linux c開發,有基本工具的講解後面有關於文件操作,進程通信、網路編程等。

《unix環境高級編程》 經典大部頭。學習unix 系統編程,進程,網路編程等。

這幾本是我目前在看的。另外c、c++的話一些經典書籍可以很容易搜到。樓主如果是在linuxunix工作的話應該是要熟悉c語言的,另外python、shell腳本要學學。(我面試的時候還不會shell,而且只看了兩天python然後就說了自己會python,還好沒有深入問我python)


  • 各種發行版本的選擇對初學Unix/Linux是否有決定性的影響?並提出你的建議。

我不能完全理解你的問題中所說的「決定性」到底意指什麼,所以我有了以下延伸你問題的(具體化)的猜測:

1.哪種版本會給你帶來更大的挫折感?其實這個問題是等同於在問哪種版本的學習曲線更高。

我建議你大致去了解每種發行版的特點,一般在其主頁有簡短介紹,通過 wikipedia 閱讀前三節也是個好辦法。比如你至少可以知道 rhel 的目的在於商用,suse 對於商用軟體的適應性更好。gentoo 傾向於一切都手動編譯,以至於內置類為編譯調整而存在便利系統。bsd 的 ports 很偉大, ubuntu 的桌面特性很人性化,以及 mandriva 大量使用 perl 來實現其環境配置與相關管理工具等等。其實除了商用之外每個種類的發行版都很有個性,從這個角度看,所謂的決定性影響應該是他的特點與你的相性如何。

2.哪種版本的通用性更好?也就是說學習之後,在使用其他版本的時候可以減少學習的量?

如果你是從這個角度觸發提出這個問題,那麼我建議你從閱讀基礎的教科書開始。不用去管什麼不同的發行版,其實他們在你成為熟練工種之前,骨子裡大同小異。在這裡,我推薦一本入門小書:Learning the UNIX Operating System, Fifth Edition (豆瓣)

  • 提供一個能平穩的在Unix/Linux的學習中進階的步驟。

與問題1相似,我還是首先想反問一句,我相信一點,假如你肯多思考一下以確定自己的學習的具體目標,我會更容易回答你這樣抽象的問題。

  • 對於程序員來講需要學習到什麼程度才能滿足工作需要?

什麼是程序員?什麼工作?什麼需要?能否再具體些?不然實在不好講。

對於 Unix / Linux 管理員來說,學習 shell, perl 以及正則表達式是有用也有趣的。

對於任何程序員來說,學習 unix/linux 或許不是必須的,但是熟悉他的好處是有的,我認為。這個等你有了些心得,我們再來一起聊。

  • 請按次序推薦幾本書籍(題主非計算機專業)。

如果是非專業的,如果再加上沒有強烈的興趣,我認為任何一本與 Unix / Linux 相關的書籍都會讓你感到痛苦和茫然。但假如不是以上的情況,那麼還有一些推薦。

Unix 編程藝術 -- 基本上是在扯,別被編程和藝術兩個字嚇到

網路農夫的 C Shell 教程 -- 在網路上可以找到,裡面講到很多歷史故事。

Unix 痛恨者手冊 -- 如果你讀這個不感到乏味,那麼你可以從書中找到好多名詞線索,在你尋根究底的過程中,你會知道的越來越多,而且很多方面,在你今後的熟悉過程中,你還會不斷驗證你的過往所學所遇,甚至還可能偶爾會心一笑。


非計算機專業想做程序員請先直接學編程語言

Java、Python、Ruby里選一個好了(排名木有先後)

然後裝個linux在linux下編譯運行寫程序

注意重點是不要使用任何圖形界面

然後看看怎麼做網站,用自己的電腦做伺服器在校園網上發布

什麼資料庫什麼apache什麼nginx什麼git server都搭起來

版本不重要

有問題了就網上搜搜到處問問

學技術還是要多實踐,看書做補充


推薦閱讀:

TAG:操作系統 | Linux | Ubuntu | Unix | BSD |