Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

程式設計師聯盟發表於2017-03-31

Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

-- 作者 謝恩銘 轉載請註明出處

內容簡介


  1. 第二部分第一課:終端Terminal,好戲上場
  2. 第二部分第二課預告:命令列,世界盡在掌握

終端Terminal,好戲上場


上一課 Linux探索之旅 | 第一部分測試題 中,我們做了一些簡單的測試題。

隨著第一部分的結束,我們進入了第二部分(小編你這好像是廢話...)。

也許是第一部分有點偏理論,而且安裝Linux的發行版Ubuntu系統又比較難概述,所以小編備受折磨之後,有點“青年痴呆”也是正常。
但我向你保證,從這一部分開始,好戲正式上演!

經過第一部分的“洗禮”,我們瞭解了Linux的歷史和很多概念,如何安裝Linux,Linux的桌面環境和圖形介面是怎樣。

也許大家對於Linux系統還是不太適應,特別是使用Windows系統的朋友。

但是不可諱言,我們目前所看到的Linux系統的圖形介面和Windows並沒有太多不同,瀏覽器也是點選就開啟的,資料夾也是視覺化的,安裝軟體也不是太難。

但是Linux的獨特性從這一課才會慢慢顯露。如果你是Windows的老使用者,你會發現這是一個全新的世界。

而且,很可能你之前並沒有這樣的經驗。或許你會說你用Dos編寫過東西,那個不算好嗎。

馬上要介紹的叫做終端(英語是Terminal)的東西,可以說它的世界是無限廣闊的。幾乎沒有一個人敢說把終端的東西全部學會了,總是會有新東西等待我們去發現。

所謂“一入終端深似海,從此妹子是路人”。
開玩笑啦,學好Linux技術,熟悉終端命令列。
升職加薪,當上總經理,出任CEO,迎娶白富美,走向人生巔峰,指(zi)日可待啊~

為什麼要有終端呢?


在正式縱身於終端的“海洋”之前,先來學習一些“救生知識”,以免“溺水”。

畢竟好景還很長,我可不想“眼睜睜地看著你,卻無能為力,任你消失在終端的盡頭...”。

Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

上圖就是一個終端的大致印象。此終端後面的背景還真是一片海洋,好應景...

那麼我們首先來考慮這樣一些問題:

為什麼我們要發明終端,而不是一開始就用圖形介面?
畢竟滑鼠+圖形介面是更直觀的嘛。
難道只是為了裝高階專業,才故意搞這麼複雜,就為了讓人覺得資訊科技只能由一些內行的人來做麼?
為什麼沒把終端去掉呢?這都過時啦~

都是好問題。我們一一來回答。

Q:為什麼我們要發明終端,而不是一開始就用圖形介面?
A:這個其實第一部分的第一課我們就已經講過了。回答是:因為我們沒有選擇的餘地。終端剛被髮明出來的時候大概在1970年代初,那是一個即使黑白兩色的螢幕都是奢侈的年代,那個時候電腦的計算能力還遠遠不如我隔壁鄰居的姐姐的兒子的哥哥的手中的一個計算器。是的,就是這麼艱難。在今天看來再普通不過的五顏六色的圖形介面和滑鼠操作,其實是需要很高的處理能力的。在當時“黑暗的舊社會”,臣妾實在是做不到啊。因此,終端就成了當時操控電腦的唯一方式。


Q:畢竟滑鼠+圖形介面是更直觀的嘛。
A:是的,我完全同意您的看法。終端確實不如真正的圖形介面那麼直觀。在我們剛開始學資訊科技時,肯定是圖形介面更容易上手。而且現在Linux下的圖形介面(Gnome,Unity,KDE,等)的易用程度也越來越高了,並不比Windows的圖形介面難用多少。終端確實是初學者的一個門檻。


Q:難道只是為了裝高階專業,才故意搞這麼複雜,就為了讓人覺得資訊科技只能由一些內行的人來做麼?
A:一開始,終端中的命令確實會讓人不適應。然後你可能會說:“這堆沒意義的字母組合不就是為了顯示沒有多少人能用終端麼?”(言下之意就是隻有高階的程式設計師才能使用終端)。然而,完全不是這樣的。這樣做都是經過資訊科技專家深思熟慮的:
終端裡的命令更簡短,簡潔,這都是為了節省時間。我們舉個例子,在終端中有一個比較常用的命令 pwd,用於顯示當前所在目錄。那假如要更直觀,我可能得這樣寫這個命令:inwhichdirectoryamirightnow (這個長單詞其實是In which directory am I right now的連寫,是英語“我現在在哪個目錄裡”的意思),寫個幾百遍你就知道編寫這個pwd命令的專家是多麼“人道”了。


Q:為什麼沒把終端去掉呢?這都過時啦。
A:自從圖形介面被髮明之後,為什麼還沒刪除終端這個陳舊的技術呢?很多人也許都有這個疑問。但要知道,我們學習終端的操作也許比圖形介面要花多得多的時間,但是一旦掌握瞭如何使用終端裡的命令,那麼常常可以比圖形介面更快、更高、更強。而且,有些操作還真的只能依靠終端來完成,求助於圖形介面就顯得很沒意思啦。

舉個例子:
在一個目錄裡,有各種檔案型別:文字檔案,圖片,音訊,視訊。如果你想知道這裡面有多少個JPEG型別的圖片。在圖形介面下不容易吧?

但是在終端裡,直接一句命令搞定:

ls -l | grep jpg | wc -l複製程式碼

顯示結果例如:

108

怎麼樣?短短數秒我們就得到我們想要的答案了。假如是圖形介面,能這麼快捷嗎?

我們還可以把統計的數目儲存到一個文字檔案(jpeg_nb.txt)裡:

ls -l | grep jpg | wc -l > jpeg_nb.txt複製程式碼

我們甚至還可以用一句命令:先統計這個數目,儲存到jpeg_nb.txt檔案裡,再把這個檔案用email傳給一個朋友。

ls -l | grep jpg | wc -l > jpeg_nb.txt | mail -s "jpeg number" oscar@csdn.com複製程式碼

所以說:終端命令列絕不會過時。

你會發現,Linux的終端的命令大部分都和Unix一樣,名字一樣,用法也基本相同。

這並不是說Linux的命令的原始碼是拷貝或者抄襲Unix的,只是功能一樣而已,這些Linux命令的原始碼還是GNU專案的全世界各地的極客們努力寫出來的。

之後GNU開源專案就和Linux作業系統核心(由Linus Torvalds編寫)合併了,成為了一個完整的作業系統,稱為GNU/Linux。

只不過後來人們簡稱為Linux了。當然,這些在Linux探索之旅 | 開宗明義+第一部分第一課:什麼是Linux?中都詳述了。

那麼,好處是什麼呢?

終端的命令幾乎沒改變過,自從20世紀6,7十年代。

因此,今天一位垂垂老矣的Unix使用者,在Linux作業系統中也可以“健步如飛”呢。因為命令基本都是一樣的。

而且在未來的很多年中都將是這樣。所以說,雖然終端命令列一開始也許花你一些時間來入門,但它是可以吃一輩子的“老本”。這酸爽~ 到了我70歲繼續程式設計賺外快唄。

下一課開始,我們將正式學習終端的命令列了,這些命令在Unix和Linux中幾乎是一樣的。而且,在基於Unix設計理念的很多其他作業系統裡也是一樣的。畢竟Unix是“祖字輩”的。

因此,接下去我們學習的各種終端命令,你也可以用在基於修改過的Unix系統的蘋果的Mac OS X系統裡。

如果你是蘋果Mac OS X系統的使用者,那麼你可以開啟一個Unix的終端,來體驗一下終端的操作:

前往->實用工具(也可以用快捷鍵:cmd+shift+U):

Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

點選終端那個圖示,就開啟了一個終端。

如果你覺得這樣太麻煩,你也可以把終端放到桌面上的Dock中,方便下次啟動:

Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

真正的終端,有點令人畏懼


那麼問題來了:如何在我們目前Ubuntu的桌面環境(Gnome,Unity或KDE)下來開啟終端呢?

方法是比較多的。在Linux系統中,我們經常可以通過幾種不同的方法來達到同一目的。

首先,我們將介紹一個一般不太會用到的方法:進入真正的終端。

什麼是“真正”的呢?

可以說是完全沒有圖形介面的,就是一個黑乎乎的框子,黑底白字,然後你在裡面只能用鍵盤來輸入。

我們可以通過快捷鍵的組合來快速地進入真正的終端。

不過,在開始之前,請先了解如何從這些真正的終端裡退出來,回到我們的Ubuntu桌面。
不然您可能會很囧...

假定目前你所在的是Ubuntu的桌面中,如下圖,是在Unity桌面當中

Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

我們將要用組合快捷鍵來進入到被稱為tty的終端裡(也稱為控制檯(英語是Console))。

什麼是tty呢?


在Linux中,TTY也許是跟終端有關係的最為混亂的術語。

TTY是TeleTYpe的一個縮寫。Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過序列線用印表機鍵盤閱讀和傳送資訊的東西,和古老的電報機區別並不是很大。

之後,當計算機只能以批處理方式執行時(當時穿孔卡片閱讀器是唯一能使程式載入執行的方式),電傳打字機成為唯一能夠被使用的“實時”輸入/輸出裝置。最終,電傳打字機被鍵盤和顯示器終端所取代。

控制檯(Console)


在Linux 系統中,計算機顯示器通常被稱為控制檯終端(Console)。

它模擬了型別為Linux的一種終端(TERM=Linux),並且有一些裝置特殊檔案與之相關聯:tty0、tty1、tty2 等。

當你在控制檯上登入時,使用的是tty0。使用Ctrl+Alt+[F1-F6]組合鍵時,我們就可以切換到tty1、tty3等上面去。

tty1–tty6等稱為虛擬終端,而tty0則是當前所使用虛擬終端的一個別名,系統所產生的資訊會傳送到該終端上(這時也叫控制檯終端)。

因此不管當前正在使用哪個虛擬終端,系統資訊都會傳送到控制檯終端上。/dev/console即控制檯,是與作業系統互動的裝置,系統將一些資訊直接輸出到控制檯上。只有在單使用者模式下,才允許使用者登入控制檯。

也許定義比較抽象,不過並不需要大家太理解這塊內容。

登入TTY的這些快捷鍵是:

Ctrl + Alt + F1 : terminal 1 (tty1)

Ctrl + Alt + F2 : terminal 2 (tty2)

Ctrl + Alt + F3 : terminal 3 (tty3)

Ctrl + Alt + F4 : terminal 4 (tty4)

Ctrl + Alt + F5 : terminal 5 (tty5)

Ctrl + Alt + F6 : terminal 6 (tty6)

Ctrl + Alt + F7 : 回到圖形介面(感謝上帝~)

所以一共有6個控制檯可供選擇。

在你開始測試前,一定要記得如何離開真正的黑乎乎的終端噢:

按Ctrl + Alt + F7三個鍵。

你可以任選一個終端進入,比如說我們要進入terminal 1,那麼就可以使用快捷鍵組合:Ctrl + Alt + F1

你的螢幕可能會閃爍幾下,不要害怕。然後你就進入真正的終端啦,如下圖:

Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

真是“一夜回到解放前,烏漆麻黑一大片”。在使用此終端前,需要先登入。

  1. 輸入你之前安裝Ubuntu時註冊的使用者名稱,回車:

  2. 再輸入你的密碼(在你輸入密碼的時候,螢幕是不會顯示你輸入的任何內容的,連星號也沒有),回車。就可以使用tty1了。

你也可以用類似的方式進入其他終端(一共有六個同時存在的終端,tty1~tty6)。

好了,現在,演示完畢,我們可以退出此終端了,按下:Ctrl + Alt + F7

我們就回到了我們的圖形介面桌面。

真正的終端還是很有用的,雖然對於初學者來說有點嚇人。不過要知道,很多基於Linux的伺服器是沒有圖形介面的,所有的操作也就是在這麼個黑色的大框子裡進行。

而且有時候當我們的電腦出了問題之後,需要在真正的終端裡解決問題。

圖形模式的終端


受了點“真正”終端介面的小刺激之後,我們來看看我們目前通常使用的終端模式。即使是最瘋狂的Linux使用者也更喜歡使用圖形模式下的終端。

原因有很多:

  • 圖形模式的終端更加親民,而且你使用終端的時候,還可以使用其他圖形介面的應用程式,比如使用聊天軟體和朋友聊天等。

  • 螢幕解析度更大,所以我們可以在終端裡顯示更多的內容。

  • 我們可以自定義終端的外觀,甚至給它換個背景。

  • 我們還可以用滑鼠(是的,在圖形模式的終端裡,滑鼠也可以派上用場)來複制,貼上文字等。

因此,我們在之後的課程中都會繼續使用圖形模式的終端。

那麼,如何開啟一個圖形模式的終端呢?

如果你是在Unity桌面下,那麼可以調出系統搜尋框。Ubuntu 14.04 有一個被稱作 Super 鍵的功能鍵,其實就是 Windows 系統中的 Win 功能鍵。

也就是大多數鍵盤上那個帶有微軟徽標的按鍵,只不過在 Ubuntu 系統中被稱作 Super 鍵。按下這個鍵與用滑鼠點選桌面左上角那個 Ubuntu 徽標按鈕的效果是一樣的。

可以看到 Super 鍵的功能其實就是一個搜尋框,可以搜尋電腦和網路上各種軟體、資料和一切你需要的東西。

然後你再搜尋框中輸入“terminal”,就可以看到終端被找出來了:

Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

你可以將 “Terminal” 鎖定在工作列或者放在桌面成為快捷方式,這樣以後就不需要每次都通過 Super 鍵來啟動。

可以用快捷鍵來調出終端:Ctrl + Alt + T。當然你也可以在快捷方式裡自己修改調出終端的快捷方式組合,不一定要用系統預設的。

Linux 探索之旅 | 第二部分第一課:終端 Terminal,好戲上場

總結


  1. 終端是個奇妙的東西,一開始它的低顏值,高難度可能會令我們灰心氣餒。

  2. 但是入門之後,你會發現終端命令列是如此強大,簡直飛一般的感覺。就是這個feel,倍兒爽~ 享受“彈指間,一切盡在掌握”的感覺。

  3. 而且終端可以幫助我們完成一些圖形介面做不到的工作,且能化繁為簡。

  4. 雖然我們可以藉助快捷鍵(Ctrl + Alt + F1 ~ F6)來進入tty1 ~ tty6這六個真正的全螢幕的終端,但是我們平時還是比較常用圖形模式的終端。

第二部分第二課預告


今天的課就到這裡,一起加油吧!

下一課我們學習:Linux探索之旅 | 第二部分第二課:命令列,世界盡在掌握


微信公眾號「程式設計師聯盟」ProgrammerLeague
我是謝恩銘,在巴黎奮鬥的軟體工程師。
我的簡介
我的經歷
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:“向著標杆直跑”

相關文章