今天是機派X系列文章的第三天。
昨天在樹莓派上成功安裝了 Ubuntu Server,今天讓我們開始探索 Ubuntu 吧!
本篇將介紹 Ubuntu 的基本概念與操作,前面的部份會比較生硬一點,後面會有較多的實機操作。
本篇大綱:
通常作業系統依照與使用者的互動形式可以分成兩種:命令列界面(Command Line Interface , CLI)與圖形化使用者界面(Graphical User Interface , GUI)。命令列界面基本上就是使用者透過鍵盤直接下指令(Command , CMD)給電腦執行,並由電腦輸出回應的文字訊息,是較早期開發出來的的互動模式;而圖形化使用者界面則是以圖像為基礎,使用者可以透過滑鼠操作圖像與電腦互動,並直接從圖像化的結果得知程式執行的狀況,較晚期才被開發出來,也較為一般使用者所接受。
看的一頭霧水嗎?以大家熟知的微軟(Microsoft , MS)系列產品為例:
下圖是微軟的產品 MS-DOS 6.22 執行畫面截圖,透過鍵盤下指令(CMD)就能控制電腦。
要跟電腦互動,就要知道指令怎麼下!!
下圖是微軟的 Windows 7 執行畫面截圖,就是大家熟悉的圖形化使用者界面,只要透過滑鼠點擊、拖動就可以完成許多事。
通常,一般電腦使用者都是使用圖形化使用者界面較多,因為界面美觀、操作方便。
然而,命令列界面雖然看起來醜、使用上要記指令,但是其高效、方便、簡潔等優點,成為特定應用的首選。
聽起來怪怪的嗎?又醜又要記東西,命令列界面竟然還有人用?甚至是首選?
別著急,讓我們繼續看下去!
圖源傳送門
伺服器(Server)就是呈現命令列界面優點的最佳舞台之一,通常在 Server 上最常使用到的是 CLI 而非 GUI。
原因是 Server 通常是服務的提供者,同時可能會有多個使用者連上 Server 進行操作,這些使用者通常身處各地,透過網路與 Server 連接。由於 CLI 僅須傳輸使用者輸入的指令或電腦的回覆(文字),因此相對於以圖行為基礎的 GUI 來說,比較不容易受到網路品質的影響,也能減少 Server 系統資源的佔用。另外,CLI 模式底下,可以將多條指令(CMD)排列在一起,並製作成一個檔案後讓電腦定期執行,這樣有助於管理員管理 Server。
因為我們安裝的是 Ubuntu Server,所以沒有圖形化使用者界面(GUI),只有命令列界面(CLI)可以使用。
圖形化使用者界面的部份之後會教大家安裝,現在先學習命令列界面的使用。
因為如果一開始就下載預裝 GUI 的 Ubuntu Desktop,我想應該不會有人想學 CLI 了!
請將樹莓派接上螢幕、鍵盤、並插入記憶卡,再提供電源讓樹莓派開機。
樹莓派成功開機完成後,會看到以下畫面。
這就是 Ubuntu Server 的 CLI 的使用者登入畫面:
Ubuntu 20.04.2 LTS ubuntu tty1
ubuntu login:
使用者可以輸入使用者名稱(Username)和密碼(Password)登入 Ubuntu,登入後才能使用各種指令(Command , CMD)與功能。
就像你使用 Windows 時,進入桌面、可以自由操做電腦前,你會需要選擇使用者(User)與輸入密碼(Password)一樣。
Ubuntu 有預先創建一個使用者,使用者名稱為 ubuntu,而密碼為 ubuntu。
我們可以使用這個使用者登入系統,之後再創建我們自己的使用者!
透過鍵盤鍵入使用者名稱 ubuntu 並按下 Enter。
Ubuntu 20.04.2 LTS ubuntu tty1
ubuntu login: ubuntu
此時,會詢問使用者 ubuntu 的密碼,請一樣輸入 ubuntu。
基於安全考量,密碼在輸入時不會被顯示出來,輸入完後一樣按下 Enter 即可。
Ubuntu 20.04.2 LTS ubuntu tty1
ubuntu login: ubuntu
Password: 輸入的密碼不會顯示
如果使用者名稱與密碼配對無誤,就可以成功登入。
登入後你會看到最下面一行顯示如下。
至於這是什麼意思呢?我們將在之後一探究竟!
ubuntu@ubuntu:~$
注意:
在 Windows 系統中是不區分大小寫的(Case Insensitive , CI);然而,在 Linux 系統中(當然包含 Ubuntu)是區分大小寫的(Case Sensitive , CS)。因此在 Windows 上輸入檔名、路徑、變數名等東西時,你可能沒有注意大小寫就直接輸入,然而這樣的習慣在 Linux 中卻會造成大問題。例如:要讀取圖片 Cat.jpg,在 Windows 中你可以輸入 cat.jpg,程式依然會成功執行,然而這在 Linux 中卻會被判別為 cat.jpg 不存在。
在 Linux 中,我們將它的命令列界面(CLI)稱為 Shell,正如同前面提到的,CLI(也就是 Shell)是我們與 Ubuntu 互動的橋樑,只要在 Shell 中輸入指令就可以操作電腦。
登入前的畫面中,有一個詞:tty1 不知道你有沒有注意到?
Ubuntu 20.04.2 LTS ubuntu tty1
ubuntu login:
如果有 tty1 那是否有 tty2 呢?
Answer:有,總共有 tty1 ~ tty7
其實每一個 tty 都是一個 shell,你一共有 7 個 shell 可以使用。
為什麼要有 7 個呢?
簡答:為了讓你多工操作時比較方便。
通常,我們向 shell 每輸入一條指令,都要等該指令執行完成後,shell 才能接受下一條指令。
為了能夠方便使用者同時執行多條指令,因此有 tty1 ~ tty7 共計 7 個 shell 可以使用,這些 shell 彼此互相獨立、各自接受使用者輸入的指令工作,我們可以讓 tty1 複製檔案,在複製的過程中,我可以切換到 tty2 同時從網路上下載檔案,甚至還可以再切換到 tty3 監控系統各個資源的使用。
透過鍵盤上的 Ctrl + Alt + Fx 你就可以在不同 shell 間來回切換。
例如:Ctrl + Alt + F1 可以切換到 tty1。
例如:Ctrl + Alt + F2 可以切換到 tty2。
以此類推。
雖然剛剛都只有說 Shell,但是其實 Shell 還分很多種。
最常用的,也是 Ubuntu 內建且預設使用的 Shell,就是 Bash。
其實天底下 Shell 一大堆,但是只要搞清楚一個,其他的就容易了,因為基礎概念是一樣的。
你可以想像,這就好比你可以使用網頁瀏覽器(Web Browser)瀏覽網頁(Website),然而瀏覽器又分很多種,例如:Firefox、Google Chrome、Microsoft Edge、Opera 等。Shell 也是一樣的道理!雖然各有特色,但是只要你會用其中一個,想要跳槽改用另一個瀏覽器應該不會太困難。
覺得資訊量有點過多了嗎?
圖源傳送門
接下來,要介紹 Bash 的基本概念,了解 Bash 的概念之後才能活用指令。雖然以下看起來像是針對 Bash 的說明,但是大多數的概念可以被套用在其他 Shell 上。
當你選擇 tty1 ~ tty7 中的一個 Shell 成功登入後,Bash 會被載入,就可以看到一些歡迎訊息以及最後一行(如下引文),讓我們來解析這行的意思。
Note :
為了讓顏色更清楚,我讓字體加粗並加了空白。
ubuntu @ ubuntu : ~ $
下表的 Column 1 將上方的文字分離出來做說明,Column 2 說明這個文字所指向的用途,Column 3 針對用途的部份做詳盡的解釋。
例子 | 用途 | 說明 |
---|---|---|
ubuntu | 使用者名稱 Username | 登入這個 Shell 的使用者名稱。 |
ubuntu | 主機名稱 Hostname | 這台電腦主機的名稱,預設是 ubuntu。 |
~ | 工作目錄 Working Directory | 當前工作目錄的路徑。 |
$ | 提示符 Prompt | 表示 Bash 已就緒,可以輸入下一條指令了。 |
前兩個應該很好理解,Shell Login 時你輸入的使用者名稱就會顯示在 @ 前,而 @ 後則會顯示當前使用的電腦名稱,而在這邊正好是 ubuntu。其實你可以將 ubuntu@ubuntu 解讀為:ubuntu at ubuntu,在 ubuntu 這台電腦上,有個使用者叫 ubuntu。也許你聽起來覺得饒舌,之後我們會修改使用者名稱與主機名稱,聽起來就會舒服很多。
而工作目錄(Working Directory)則是 CLI 中很重要的概念、在 GUI 中雖然也有,但是較沒有那麼關鍵。在 Linux 中,我們常常會把資料夾(Folder)稱為目錄(Directory),而工作目錄就是:「你下指令時,所在的目錄位置」。
在詳細談工作目錄前,我們要先複習 CLI 並介紹檔案路徑的概念。我們知道 CLI 透過使用者輸入指令(CMD)與電腦互動,有些指令是要對檔案做操作(例如:複製檔案),此時我們會需要提供檔案的所在位置(Location)以及檔名(Filename),而檔案所在位置加上檔名就會形成檔案的完整路徑(File Path)。指定檔案路徑(File Path)有兩種方法,一種是絕對路徑(Absolute Path),另一種是相對路徑(Relative Path)。如果對於這兩種路徑表示法不熟的話,可以搜尋一下相關資料,或參考 這篇文章 的描述。
Note :
Windows 與 Linux 的路徑表示中,斜線的方向不一樣。Windows 採用反斜線(Back Slash),而 Linux 採用正斜線(Slash)。
一個相對路徑在 Windows 中可表示為: Documents \ salary \ 110_March.xls
一個相對路徑在 Linux 中可表示為: Documents / salary / 110_March.xls
而工作目錄的用途之一,就是作為相對路徑的參考路徑。
上面的案例中,工作目錄是 ~,而在 Bash 中 ~ 代表家目錄(Home Directory)。
家目錄牽涉到 Linux 的檔案系統架構,之後會再深入介紹。
最後談到 $,基本上 $ 沒什麼特殊用途,就只是告訴你 Bash is ready!Bash 準備好了,你可以輸入下一道指令(CMD)了!
每條指令執行完成後,Bash 都會再次顯示剛剛介紹的一連串文字:ubuntu@ubuntu:~$,最後的 $ 就是為了告訴你:可以輸入下一條指令囉。
如果對於文章內容有建議、糾錯或圖源標示不正確的問題,歡迎參考 [機派X] Day 1 嘗試與文章作者聯絡。
想看更多本系列的文章,請連結至 [機派X] Day 1 查看大綱。