淺談 Unix, Unix-Like, Linux & Ubuntu(Alphacamp)

淺談 Unix, Unix-Like, Linux & Ubuntu

在談及「類 UNIX」前,我們先來認識「UNIX」。

UNIX

UNIX 是一種電腦作業系統,於1969 年在美國開發,他是一種自由和開放原始碼(Free and Open Source Software,簡稱開源軟體)的程式,也就是說,任何人都被授權可以免費並自由的使用、複製、研究和以任何方式來改動 UNIX,其原始碼是開放和共享的。
UNIX 是最早被普及的電腦作業系統之一,也是科學計算、大型電腦、超級電腦等所用作業系統的主流;現在其仍然被應用於一些對穩定性要求極高的資料中心上。

UNIX-Like

類 UNIX(UNIX-like) 作業系統(UNIX-Like Operating System) - 從 80 年代開始,很多軟體開發者發起了不同的專案,目標在建立完全自由且向下相容 UNIX 的作業系統;我們稱這些為類 UNIX作業系統,而 Linux 就是現在非常流行的類 UNIX 作業系統之一。

Linux

Linux 是類 UNIX 作業系統的一種,也是目前運用最廣泛、使用人數最多的作業系統,同時 Linux 也是自由軟體和開放原始碼軟體發展中最著名的例子。該作業系統的核心由 Linus Torvalds 在1991年10月5日首次發布。
現在世界上 500 個最快的超級電腦有 90% 以上正在執行Linux 套件或其變種的版本。Linux 也廣泛應用在嵌入式系統上,如手機、平板電腦、電視和電子遊戲機等,在三星、HTC 等手機上廣泛使用的 Android 作業系統就是建立在 Linux 核心之上。

Ubuntu

Ubuntu 是以桌面應用為主的 Linux 發行版本,所有系統相關的任務採用 Linux、UNIX 系統的基本思維。Ubuntu 是由 Canonical 公司發布的「自由」軟體 -- 自由的意思就是讓人可以免費使用與免費分享,Canonical 透過提供對 Ubuntu 的技術支援和其他周邊服務獲得盈利;Ubuntu 這名稱來自非洲南部祖魯語或科薩語的「ubuntu」一詞,意思是「我的存在是因為大家的存在」,是非洲傳統的一種價值觀。Ubuntu 的作業速度快,穩定度高、同時有蠻完整的社群支援,更是免費的,所以Ubuntu 在程式初學者的社群非常流行;其高效強大的特點也在伺服器領域得到了廣泛的應用。

為何大多數網路開發者會選用 UNIX 或類 UNIX?

一般人 (非軟體工程師) 可能對 UNIX 比較陌生,但它是網路伺服器(Web Server)的標準系統;事實上,世界上數以百萬計的人每天都與 Linux 和 Unix 系統進行互動,其中大多數人從未在他們的生活中寫過一行代碼。
那麼 Unix 又為何受到網路工程師和其他技術人才的喜愛呢?

只有文字的世界 - Everything is text

UNIX 提供的操作介面的是命令行介面(CLI),也是專業的軟體工程師最喜愛的介面。只有文字(Text-only)的介面讓軟體更輕便,能更有效地使用網路伺服器。同時,文字介面對頻寬的要求十分低,更方便網路管理員進行遠端管理。
另外,UNIX 系統對文字檔案的依賴度非常高,所有系統的設定,以及資料的收集與輸出,都是透過文字,這樣的設計對於現在習慣影音、圖像( Youtube、Instagram)的使用者來說可能會有些障礙;然而 UNIX 講究的是使用者的溝通邏輯與文字表達能力,只要肯多練習,使用者很快也會體會到純文字溝通的清楚與便利。.

內建工具與設計邏輯

UNIX 以命令行介面(CLI)介面以及文字檔案為主,這就反應了 UNIX 開發者在設計 UNIX 系統時,導入了工程師思維;而工程師思維的另一個主要特徵,就是會應用小工具去來執行和解決複雜的任務。
打個比方:UNIX 系統有一個符號指令「 | 」,它能將一個程序的輸出結果發送到另一個程序的輸入;這個符號指令允許工程師能更方便地把一系列的工具串連起來。
比如說以下這個 UNIX 指令:
$ who | cut -c1-10 | sort | uniq

這個指令將 “who”、”cut”、”sort”、”uniq” 四個指令(工具)串連起來,那他到底做了什麼呢?
先讓我們來介紹每個指令的作用:
  • who - 尋找登陸在系統裡的用戶
  • cut - 用於檔案內的文字處理,您可以使用此指令提取檔案裡面部分的文字。在這裡,cut -c1-10 的意思,就是從資料檔案中,只提取第一到第十個字符(characters)。
  • Sort - 依照順序排序(A-Z,0-9)
  • uniq - 這裡是指「只保留非重複(unique)的用戶名單」
所以這串指令,就是想要產生一個排序好的列表,把所有的非重複登錄系統(因為用戶可以登錄多次)的用戶的首十個字符顯示出來!希望您有從例子裡理解 UNIX 的設計與語法的邏輯。

社群建立的工具與力量

因為大部分的軟體開發者都在 UNIX 或是 Linux 系統上工作,而軟體開發者的特質是他們會建立新的工具,來簡化自己與他人的工作,所以在網路上您可以找到很多免費與開源的工具,讓軟體開發變得更便利;下為一些免費的開發工具:
  • Vim:Linux 上源遠流長的文字編輯器
  • Homebrew:管理不同軟體之間的相依問題,幫助解決不同軟體版本的衝突
  • Cobbler:幫助你把安裝伺服器的繁瑣過程自動化
  • Docker:可以把 OS 模擬器放在雲端上,避免佔用電腦資源
  • Back In Time:能用 snapshot 的方式來備份系統,並設定備份計劃
  • Open Movie Editor:影片編輯軟體

穩定與安全性

微軟開發的 Windows 是針對不會寫程式、非工程背景的大眾使用者設計的,所以他們會先追求表面上看來簡單、易用;但程式的核心部分,並不是在技術上最完善,也因為這樣市場上的電腦病毒,大部分都是針對 Windows。

Windows 跟 UNIX 最大的差異是在資訊透明度,Windows 上底層的程式必須仰賴微軟更新後才會修復,由於您很難看到底層的原始碼,若在安裝程式開發軟體時有任何不順利,使用者往往會無法研究出是 Windows系統的哪個部分出錯,或是有其他軟體相互排斥的狀況;相對之下您可以看到 UNIX 底層的設定,以及系統運作的紀錄,您可以隨時進入底層修正錯誤。

评论

热门博文