oracle學習入門系列之三Unix、Linux曆史及基礎
終于翻過了前面兩篇,喝杯咖啡提下神,咱們繼續前行。這次我們要進行作業系統方面知識了,考慮到目前時間上作業系統的多樣性、變化性等,蛤蟆斟酌再三,決定還是Unix/Linux比較符合我們的實際。
開始之前不得不又提幾個問題:
1、 Unix 從哪裡來
2、 Linux從哪裡來
3、 Unix/Linux什麼關系
4、 怎麼入手這系統
哎呀,看見這些問題蛤蟆就有點老激動了,最喜歡唠嗑的就是這些雞皮蒜毛的事情了。讓我們趕緊開始吧~~不急,留個郵箱先
本人郵箱:[email protected]
微信公衆号:HopToad
歡迎各界交流
1 UNIX從哪裡來
我看見目前很多小夥伴都急着去實踐一些指令,去了解作業系統的實作,甚至去看作業系統的源代碼,其實呢蛤蟆覺這個真的不要捉急的。如果小夥伴這麼急着去做這些,蛤蟆相信不用多久小夥伴就打起退堂鼓了。因為這樣堅持不下來,遇到大一點的困難,很容易讓人放棄的,放棄了就什麼也沒了,以前的也就白學了。蛤蟆覺得任何事情最好的老師是興趣,而怎麼來提起小夥伴們感興趣呢?我想就是這雞毛蒜皮的事情,看着這一地雞毛我們也知道就算是Linux,windows,mac os這些牛逼的作業系統,當時也是一步一步成型的,并非是出來就是現在這個樣子的,我們一方面就能建立興趣,另一方面也能建立信心了哈。
讓我們切入到正題,unix 從哪裡來?
讓我們回到1965年時候,貝爾實驗室、通用電氣、MIT合作了一個項目,(之前我們在第一篇中說過IBM在1964年推出了大型機麼),這個項目就是實作在一台機器上支援多個任務、多個使用者同時接入,同時讓所有使用者都感覺像自己一個人在使用機器一樣(我們現在的機器其實都有該特性了,但是最原始做這個事情是多麼不容易的)。這個項目名字叫做MULTICS作業系統。
到了1969年,也是過了4年,貝爾實驗室感覺項目進度太慢,就不幹了。(這裡不得不提下貝爾實驗室,貝爾實驗室發明了是半導體、雷射器、太陽能電池、發光二極管、數字交換機、通信衛星、電子數字計算機、蜂窩移動通信裝置、長途電視傳送、仿真語言、有聲電影、立體聲錄音,以及通信網等,共6次拿諾貝爾獎,科學家多如牛毛,類似三國中的魏國,武将如雲,謀士如雨啊,貝爾實驗室真心為美國、為人類做出了巨大的科學研究,要知道我們國家至今沒有科學領域的諾貝爾獎,文學獎當然另算的)
貝爾不幹之後,有個叫Ken Thompson(Unix之父)的老程式員閑來沒事,開始玩星際旅行的遊戲了,Ready go!!飛機起飛了,左轉,右舷打滿,刹車,繼續飛行。。。。嘭。。飛機爆炸了。
Ken Thompson:!@#$%^&*,這個反應機器反應太慢了~~~
于是Thompson發現了一台閑置的機器PDP-7,就把遊戲移植過去了。這樣Thompson在PDP-7上玩遊戲了,他叫了Dennis Ritchie(C語言之父)一起玩來玩,這台PDP-7也最多支援2人。一個同僚Brian Wilson Kernighan(UNIX,C語言雙重元老)跑過來說你們這個太簡單了,應該是"UNiplexed Information and Computing Service",縮寫為"UNICS",後來,大家取其諧音,就稱其為"UNIX"了。1970年可稱為"UNIX元年"。
1971年,Thompson為了更好的問遊戲,申請一台PDP-11/24機器,他們就一直遊戲過去了,目前在機器上也實作了簡單系統(Unix第一版)了。到了73年,又有新機器出來了,Thompson和Ritchie感覺每次用彙編一直太累了,說的也是啊一年12個月,他兩移植搞了10個月,打遊戲就剩下2個月了,而且第二年新機器就出來了。
窮則思變了,他們決定用進階語言來實作,這個想法在那個年代的确實屬偉大啊,難怪是大師嘛。他們用Fortran失敗了,然後用BCPL語言,在此基礎上形成了B語言(Unix第二版),然後Ritchie覺得這個還是不能滿足,然後改良了B語言,就有了今天的C語言。
接着就他兩一起把原先彙編的代碼用C重寫了,形成了第三版。至此UNIX和C完美結合了。
兩個好基友因為打遊戲(咳咳),通過自己的努力成功在IT曆史上劃下了重重的一筆,任時光如何荏苒,抹不去他們的作用,目前這遊戲的功勞是在偉大。
公司一開覺得沒撒,不就是兩個不務正業的碼農搞的什麼軟體麼,就免費提供給高校老師玩耍,這一鬧,到了70年代後期,公司發現其中商機了,開始保護UNIX,讓其成為商業機密了。到1979年開始就是Unix版本v7 停止大學使用Unix源碼了。
到了80年,出現了兩個分支,一個是貝爾實驗室自己的正宗版本,一個是伯克利大學的BSDUNIX(之前幾年不是開放了源碼的了麼,高校老師也不吃素啊)。這樣一來就爆發了UNIX大戰,各種系統出現了,HP-UX,SUN的Solaris, IBM的AIX ,貝爾自己的SYSTEM V 等等。我隻想說:我去啊~~~。就是類似咱們春秋戰國時期的百家争鳴,
為此在1984年,UNIX使用者協會出來說話,“你們這樣叫我們怎麼玩嘛?這麼多系統,各不一樣”
後來IEEE出擊指定了POSIX标準,通過一組最小的功能定義了在UNIX作業系統和應用程式之間相容的語言接口。POSIX是由RichardStallman(GNU創始人,大拿一枚,來過杭州的說) 應IEEE的要求而提議的一個易于記憶的名稱,含義是Portable OPerating System Interface(可移植作業系統接口),而X表明其API的傳承。
KenThompson和DennisMacAlistair Ritchie同為1983年圖靈獎得主。
UNIX來源至此明了。
總結:兩個不務正業,愛玩遊戲的碼農,在上班期間搞了一個小軟體來支援自己遊戲,結果玩大了。用咱們中國人的話說就是:天時、地理、人和三要素齊全啊~
此處向Dennis MacAlistair Ritchie,Ken Thompson表示深深的敬意!
Ritchie 已于2011年10月12日謝世。
2 Linux從哪裡來
那我們繼續看看Linux是從哪裡來的呢?
話說1979年,貝爾不在開源UNIX代碼了,荷蘭阿姆斯特丹的Vrije大學計算機科學系的Andrew S. Tanenbaum(塔内保姆教授,蛤蟆最愛)教授,憤而一擊,自己搞了系統叫做MINUX(就是min unix之意),共1.2W行。用來他的教學事業,可惜不讓别人增加其他代碼,因為塔内老師怕量太多影響學生學習,多麼有愛心的老師啊。
當年在芬蘭的赫爾辛基大學的學生Linus買了台386的機器,看則MS-DOS的系統怎麼都不爽,然後花錢買了塔内老師的書,呦,書還送CD光牒的,Linux趕緊裝上MINIX玩起來了,感覺很是爽快。
很快發現,這個MINUX 功能有限啊,畢竟是學習版本嘛,而且塔内老師也不讓加入其它功能子產品。
(此處的說明下當時世界環境:
1991年,GNU計劃已經釋出了很多工具,如GCC也有
POSIX标準也已釋出,Internet網絡也開始起步了。)
Linus想了許久,進行了前期準備,發現GNU有好多好玩的工具,終于決定自己搞個像MINUX一樣的系統出來。經過半年努力終于完工,于是在1991年10月5日,也就是咱們國慶期間啰,釋出在comp.os.minix 新聞討論區上了,對外選宣布了linux核心,當時叫做FREAX(怪物的意思),新聞討論區管理者發現他姓Linus,那就叫Linux吧。
其實此時核心代碼的量是非常上的,和MINUX也有點差距,很多思想直接來自于MINUX系統的。
到93年的時候,大約100名程式員加入核心編寫修改,0.99版本大概有十萬行左右了。
94年,Linux 1.0釋出,代碼17萬行,采用GPL協定。
1995年1月,紅帽公司成立了。
1996年,Linux2.0 核心40萬行,支援多個處理器了,進入實用階段。
Linux進入快速發展道路……
直到現在。
總結:一個大學生在使用任何系統都不爽的情況下,自己搞了一套,結合天時、地理、人和最終颠覆了整個行業。
此處向Linus表示深深的敬意。
3 Linux基礎
終于本篇的扯皮結束了,開始來點幹貨了必須。讓我們操起小手開始吧
3.1 Shell了解
什麼是shell?
Shell字面意思是殼,放在這裡就是核心之外的包着的一層殼。核心負責和計算機硬體打交道,shell負責和使用者打交道;shell扮演者使用者和核心中間人的作用。
假如沒有SHELL?
那麼系統将會很難使用,任何一個簡單操作都需要使用者自己編碼去實作了,人性化實在是不敢恭維。是以,我們看到UNIX出來時候基本就有SHELL了。
其實呢,Shell就是一些基于核心的應用程式。
那麼這些應用程式由哪些呢?
ok,我們乘着這個機會來看看。
3.2 常用指令
這裡蛤蟆就假設大家都有自己的Liux系統了,應為畢竟學習資料庫嘛,資料庫軟體肯定會基于某個作業系統的嘛
#cd
切換目錄的指令
#date
顯示時間和日期
#echo
螢幕上顯示文本
#history
顯示使用者前面輸入的指令
#pwd
顯示目前工作目錄
#which
檢視某條指令版本
#whereis
詢問使用程式的可執行檔案所在位置
等等,等等,是在不易全部列出,大夥記住如上指令,就可以行走于SHELL内外了,哈哈
重要的是告訴大家幾個法寶
#man
如果不知道cd 指令 怎麼用
#mancd
就會顯示怎麼使用cd了,記住這個勝記百個指令嘛。
3.3 Vi編輯器
vi 編輯器是Linux和Unix上最基本的文本編輯器,剛上班那會,聽同僚說這個東西大師都用的,于是我苦練之,3年之後終于….
發現其實就是個軟體嘛~大師用什麼并不重要,重要的是大師用其來幹嘛。
不過話說回來,工欲善其事,必先利其器。是以我們還是很有必要玩好vi的,不然在linux下編輯個檔案都困難了。
具體蛤蟆不展開了,做到如下幾點就可以
知道如何打開檔案(如:vi a.txt )
知道如何切換模式( vi 有兩種模式,指令模式和編輯模式 )
知道如何插入文字
初步就這樣,大家可以練習一下,隻要1~2天即可娴熟。
3.4 目錄介紹
我們知道windows中以後C槽D盤什麼,其實最早有A盤,B盤的,那是留給軟碟使用的,沒想到淘汰得這麼快,我記得小時候我姐買的電腦上有軟驅,有幾個軟碟1.44M大小才,記得我看上裡面黑色的磁片,賊光亮的,好奇心驅使,然後就用螺絲刀都給拆了,然後…..反正屁股腫了幾天。
Windows中C槽打開後看到的全是系統檔案的目錄,Linux中其實也差不多,隻不過Linux的最外層是一個叫做根的目錄,用“/”表示。
我們暫時記住幾個目錄就行了
一個 “/”根目錄,所有其他目錄從這裡衍生出來,一個系統就一個”/”
一個/boot目錄,這個目錄是挂載 根目錄下”/” 的,存放的是啟動檔案
一個/home目錄,所有新的使用者都可能會在該目錄下存在工作目錄,對了,就是可能,因為有些可能沒有或者不需要。
3.5 其他常用指令
#ssh 安全外殼協定,用于遠端登陸
#ftp 檔案傳輸協定
#telnet Internet遠端登陸服務的标準協定和主要方式