近期由於工作的關係,開始接觸GCP的虛擬機(VM),SSH按下去馬上跳到可怕的黑畫面,充斥各種指令飛來飛去。同事說這是Linux作業系統啦,你只能輸入指令和電腦溝通,先忘了滑鼠的存在吧~
嗯……對於法文系畢業的純文組菜鳥來說,又是危險的深水區呢。不過既然上了賊船,還是得耍狠做做樣子,稍、稍微學一點,了解一下總可以了吧?
什麼是作業系統?
誠如優秀同事所言,Linux和Windows、iOS一樣,是所謂的作業系統(OS)。而大家耳熟能詳的Android平台,就是基於Linux作業系統運行的。相信各位文組同胞和我一樣,一時半刻解釋不了什麼是作業系統對吧?沒關係,我們來看一下 linux.com 的貼心翻譯──
An operating system is software that manages all of the hardware resources associated with your desktop or laptop. To put it simply, the operating system manages the communication between your software and your hardware. Without the operating system (OS), the software wouldn't function.
一言以蔽之,作業系統負責軟體與硬體間的溝通,確保應用程式和硬體資源(CPU、記憶體等等)能夠順利運作。小提醒,作業系統本身也是軟體喔。
舉個經典例子,作業系統就像汽車引擎,引擎自己可以發動,但必須搭配其他組件(汽缸、變速器、輪胎……),整台汽車才能上路。汽車要是引擎故障,空有其他組件也如同廢鐵。這樣看起來,作業系統真的很重要對吧?
你說的Linux是那個Linux嗎?
今天我們說到Linux都是以作業系統為預設,不過盤古開天闢地之時,也就是一開始啦,Linux其實是Linus Torvalds所研發出來的核心(kernel)名稱。等等,kernel又是什麼鬼東西?
kernel是一組電腦程式,也是作業系統最最最最「核心」的部分,沒有kernel就沒有作業系統。kernel主要管理軟體所發出的I/O(input and output)要求,轉譯成硬體世界的語言後,交給CPU和其他硬體快樂夥伴們處理。
不對啊,你剛剛說Linux是作業系統,現在又說是kernel,哪能這樣改了又改的?這就牽扯到Linux和GNU計畫的歷史情愫了。這邊沒有要詳述這段感情故事,總而言之,當Linus Torvalds研發Linux kernel時,GNU計畫已經生出了許多軟體組件,而GNU計畫正好缺乏kernel成為完全體,於是Linus Torvalds就把Linux kernel結合許多GNU組件,一套完整的作業系統終於誕生。
至今似乎仍有人抗議,應該將Linux正名為GNU/Linux,還其他GNU計畫的研發人員一個公道。這種感覺,大概就像「愛迪生發明燈泡」一樣爭議吧。
你家的Linux生得真可愛
從上面的介紹得知,我們今天所說的Linux,其實是Linux kernel結合其他GNU組件而生的「綜合體」,再搭配不同的使用介面和技術,市場上於是出現了許許多多的版本(distribution)。比較耳熟能詳的有Debian、FEDORA、UBUNTU,有些免費,有些是需要付費的商用版本,大家可以依據習慣的使用環境做選擇。
Terminal & Shell:翻譯翻譯,什麼,叫,驚喜
好了,現在我們準備要輸入指令和電腦溝通。一般來說,我們用Windows或Mac都可以直接靠滑鼠點擊執行新增、刪除檔案或資料夾的動作,而這些作業系統也很貼心地準備好圖像使用者介面(Graphical User Interface),就算電腦白癡也能夠看圖說故事。
然而來到Linux的世界後,我們需要大刀闊斧,忘掉這些美美的直觀界面和滑鼠操作,因為Linux採取命令列介面(Command Line Interface),你只能用一行一行的命令列(Command Line)與電腦溝通。沒錯,就是那種看起來很厲害的黑畫面。
命令列雖然乍看之下費解,但還是較為接近我們人類使用的語言,而電腦自然不懂這些代表什麼。怎麼辦?有看過《斯卡羅》的都知道,找翻譯不就能解決問題了嗎?這就是Shell的工作範疇了。
Shell中文翻成「殼層」,負責將我們輸入的指令轉譯給OS。為了讓Shell運作,你也需要終端機(Terminal),看到這個字,也許你會想到噸位級的超大機台,不過現在的終端機都已經化為軟體,直接在電腦呼叫即可。Shell有許多不同的版本,Linux預設的為Bash。
簡單來說,Shell是包覆住kernel的外殼層,負責將我們輸入的命令列轉譯給作業系統。
參考資料
What is Linux
The Great Debate: Is it Linux or GNU/Linux?
The Linux Command Line Bootcamp: Beginner To Power User