在 Linux 環境下,熟練掌握終端機指令與檔案操作是必備技能。本文將深入淺出地介紹 Linux 檔案系統的導覽方式,並搭配實務操作與圖表說明,讓讀者快速上手常用的 Linux 指令,有效提升工作效率。從 ls、cd、pwd 等基礎指令開始,逐步講解檔案和目錄的管理技巧,例如建立、刪除、複製、移動檔案與目錄。接著,文章會進一步探討 Shell 的概念、Bash 的快捷鍵操作、軟體包管理器的使用,以及不同文字編輯器(Vim、Emacs、Nano)的特性與比較,讓讀者能根據自身需求選擇合適的工具,更有效率地進行程式開發和系統管理。
導覽 Linux 檔案系統的基本指令
在 Linux 命令列介面(CLI)中,玄貓會使用一些基本的指令來導覽檔案系統,這些指令包括 cd 和 ls。這些指令不僅用於導航,還可以執行程式。以下是一些常用的 Linux 指令,這些指令玄貓會經常使用並應該要熟悉。
常用 Linux 指令
- ls:列出當前目錄中的檔案。
- cd:變更目錄。
- pwd:顯示當前工作目錄。
- rm filename:刪除名為
filename的檔案。 - mkdir directoryname:建立名為
directoryname的目錄。 - rmdir directoryname:刪除空的目錄。
- cat textfile:在終端機顯示
textfile的內容。 - mv oldfile newfile:將
oldfile移動(重新命名)到newfile。 - cp oldfile newfile:複製
oldfile到newfile。 - man command:顯示
command的手冊頁面。 - date:讀取系統日期/時間。
- echo:將輸入的文字回顯在終端機上。
- grep:使用正規表示式進行搜尋的程式。
- sudo:以 root 使用者身份執行指令。
- ./program:執行程式。
- exit:離開終端機會話。
特殊指令說明
以下是一些需要特別說明的指令:
man
man 是最重要的一個指令。如果玄貓對某個特定指令的功能或引數/旗標不確定,可以在終端機中輸入 man command 來檢視 Unix 手冊頁面,這裡有玄貓需要了解的所有資訊。進入手冊頁面後,按 Enter 鍵可以滾動,按 q 鍵可以傳回終端機。
ls
ls 指令列出當前目錄中的檔案。使用 -l 和 -a 等旗標可以顯示檔案許可權和修改日期等資訊。例如,-l 旗標會顯示類別似 -rwxr-xr-x 的許可權資訊,表示該檔案是一個目錄(d),擁有者可以讀、寫和執行,群組成員和所有使用者可以讀和執行。
此外,ls -F 會在目錄後面加上 /,而 ls -a 會顯示隱藏檔案(以 . 或 .. 開頭)。
cd
cd directoryname 指令會將玄貓帶到所指定的目錄。例如,輸入 cd ~ 會回到玄貓的家目錄(home directory),而輸入 cd ../ 會上移一層目錄。如果玄貓在 /Desktop/MyFiles/ 目錄下,輸入 cd ../MyOtherFiles/ 會進入 /Desktop/MyOtherFiles/ 目導。
pwd
這個指令在玄貓迷失時非常有用,它會顯示當前所在的路徑。例如,當玄貓處於多層巢狀的目錄結構中時,使用 pwd 可以清楚地看到完整路徑。
rm
使用 rm filename 指令來刪除檔案。請注意,這個操作無法復原,因此務必確認要刪除的檔案。
mkdir 和 rmdir
這兩個指令分別用來建立和刪除目錄。需要注意的是,只有空的目錄才能被刪除;如果要刪除非空目錄,可以使用 -p 旗標來遞迴刪除父目錄。
mv 和 cp
這兩個指令分別用來移動和複製檔案。例如,將 myfile.txt 改名為 myfile2.txt 的命令是 mv myfile.txt myfile2.txt。這個命令也可以用來移動檔案到其他目錄中。類別似地,複製檔案到其他位置時可以使用 cp myfile.txt ../myfile.txt
cat
使用 cat filename 指令可以快速預覽檔案內容而不需要開啟文字編輯器。如果想逐行預覽檔案內容,可以使用 more filename
date
輸入 date 指令會顯示系統當前的日期和時間。
echo
這個指令會將輸入的文字回顯在終端機上。雖然在終端機中不太實用,但在編寫 shell 指令碼時非常有用。
grep
這個搜尋程式非常強大且靈活,利用正規表示式進行搜尋並且能夠將結果導向螢幕或其他檔案。例如,搜尋某個檔案中所有以 “apple” 開頭的行時可使用:grep ^a.ple fruitlist.txt
./filename
這個命令是用來執行可執行檔案。需要注意的是隻有擁有正確許可權且為可執行檔案才能成功執行。
exit
最後一個重要命令是 exit, 用來停止目前正在運作中的工作並關閉終端機。
操作練習
操作練習:導覽 Linux 檔案系統
以下是一個簡單的練習操作步驟:
-
首先開啟終端機(LXTerminal),確認目前所在的是家目錄:
cd ~接著輸入:
pwd預期輸出:
/home/pi -
建立一個新的子目錄並進入其中:
mkdir mydirectory/mysubdirectory cd mydirectory/mysubdirectory -
驗證所在位置:
pwd預期輸出應該是:
/home/pi/mydirectory/mysubdirectory -
建立幾個測試文字檔:
touch test1.txt test2.txt test3.txt -
列出當前目錄中的所有檔案:
ls -laFh -
檢視test1.txt中的內容:
cat test1.txt #### 情境解密: 上述指令完成後應該能夠看到test1.txt中的內容 -
嘗試複製test1.txt成test4.txt:
cp test1.txt test4.txt #### 情境解密: 上述指令完成後應該能夠看到test4.txt被新增至test1同一層級 -
嘗試移動test2.txt至mydirectory下:
mv test2.txt ../test2.txt -
嘗試刪除test3.txt:
rm test3.txt -
嘗試以root身份刪除mydirectory下之test2txt:
sudo rm ../test2txt
透過以上步驟玄貓應該能夠熟悉Linux基礎操作,逐步深入瞭解系統及其相關功能
## 使用 Linux 命令列操作檔案
### 基本檔案操作
在 Linux 系統中,使用命令列來操作檔案是非常常見的。讓我們來看一些基本的命令,這些命令可以幫助你進行日常的檔案管理任務。
首先,讓我們來測試一下 `echo` 命令。在終端機中輸入以下命令:
```bash
echo "Hello, world!"
你應該會看到終端機回應:
Hello, world!
echo 命令簡單地重複你給它的引數。不過,你也可以將輸出重定向到其他格式,預設情況下輸出到螢幕。例如,你可以使用 echo 和 > 運算元來建立一個文字檔案。輸入以下命令:
echo "This is my first text file" > file.txt
如果你列出目前目錄的內容,輸入 ls,你會看到 file.txt 被列出來。接著,建立另一個名為 file2.txt 的文字檔案:
echo "This is another file" > file2.txt
現在,將第一個檔案重新命名為 file1.txt:
mv file.txt file1.txt
列出目前目錄的內容,你會看到 file1.txt 和 file2.txt。
檔案移動與複製
接下來,讓我們將 file1.txt 複製到上一層目錄中。輸入以下命令:
cp file1.txt ../file1.txt
再將 file2.txt 移動到主目錄中:
mv file2.txt ~/file2.txt
如果你列出主目錄的內容,輸入 ls ../../,你會發現 file2.txt 已經在主目錄中,而從當前目錄中消失了。恭喜!你已經成功完成了 Linux 命令列中的常見檔案操作!
Shell 的介紹
在 Linux 中,有多種不同的 Shell 可以選擇,例如 Bourne shell、C shell 和 Korn shell。Shell 是一個文字介面,讓使用者能夠直接執行命令到檔案系統。每個 Shell 都有其優點和缺點,但並沒有一個絕對優於其他的 Shell。它們只是不同的方法來完成相同的任務。
Bourne-again shell(或稱為 bash)是 Bourne shell 的替代品,也是大多數 Linux 發行版本的預設 Shell,包括 Raspberry Pi 的 Raspbian。它可以透過登入提示符「$」來識別。Bash 有一些鍵盤快捷鍵,這些快捷鍵在終端機中進行編輯和檔案操作時非常方便。
以下是一些常用的 Bash 快捷鍵:
- Ctrl + A:將遊標移動到行首。
- Ctrl + C:停止目前正在執行的程式。
- Ctrl + D:登出—等同於輸入
exit。 - Ctrl + E:將遊標移動到行尾。
- Ctrl + H:刪除遊標前方的字元。
- Ctrl + L:清除終端機。
- Ctrl + R:搜尋命令歷史記錄。
- Ctrl + Z:暫停一個程式。
- Arrow Left/Right:遊標左/右移動一個字元。
- Arrow Up/Down:瀏覽之前的命令。
- Shift + PageUp/PageDown:在終端機輸出中向上/下移動一頁。
- Tab:命令或檔名自動補全。
- Tab Tab:顯示所有可能的命令或檔名。
內容解密:
這些快捷鍵幫助我們更高效地使用終端機。例如,Tab 鍵可以自動補全檔名或命令名稱,Tab Tab 可以顯示所有可能的補全結果,這樣我們就不需要手動敲入完整的命令或檔名了。
軟體包管理器
在 Windows 中,安裝軟體通常是下載一個 .exe 或 .msi 檔案並雙擊安裝;在 Mac 上則是下載一個 .dmg 檔案並使用其中的安裝包。而 Linux 則使用軟體包管理系統來管理軟體。
Linux 的包管理器用於下載、安裝、升級、組態和移除程式。大多數包管理器都維護一個內部資料函式庫來追蹤已安裝的軟體及其依賴項和衝突專案,以防止安裝軟體時出現問題。
不同的 Linux 發行版本使用不同的包管理器:Debian(包括 Raspberry Pi)使用 aptitude、Fedora 使用 RPM 包管理器、Puppy Linux 使用 PETget。
如果你玩過 Steam 遊戲,你可能會驚訝地發現 Steam 的介面也是一種包管理器變體。大多數包管理器都有命令列和圖形介面兩種選擇。例如,Ubuntu 使用 Synaptic 前端來管理其 aptitude 包管理器。
玄貓希望這些基本概念能夠幫助你更好地理解和使用 Linux 命令列操作檔案及軟體包管理器。
Linux 實戰技巧
Raspberry Pi 同樣使用 Ubuntu 所採用的 aptitude 型套件管理器,大多數工作都會在終端機中進行。安裝軟體的常見指令是:
sudo apt-get install package_name
這個指令會讓套件管理器執行以下步驟:
- 確定哪個軟體來源(倉函式庫)包含了請求的檔案。
- 聯絡該倉函式庫並確定需要哪些相依性。
- 下載並安裝這些相依性。
- 下載並安裝請求的軟體。
如果這看起來很簡單,那也是因為它本來就該如此。你可能會在請求不在已安裝倉函式庫中的軟體時遇到問題,但這通常也很容易解決。如果發生這種情況,只需在終端機中輸入:
sudo add-apt-repository repository_name
完成後,輸入:
sudo apt-get update
讓套件管理器知道新的倉函式庫,然後再次輸入:
sudo apt-get install package_name
幸運的是,Raspbian 的預設倉函式庫包含了你大部分所需的軟體,所以(至少對於這本文來說)你可能不會遇到這個問題。
文字編輯器
與 Windows 和 Mac 不同,Linux 提供了多種文字編輯器選擇。大多數發行版都預設安裝了 gedit,這是一款輕量級且方便的編輯器。然而,Raspberry Pi 的內建編輯器 Leafpad 效能不錯。你也可能會喜歡 nano,另一款預設安裝在 Pi 上且具有直觀介面的文字編輯器。不過,如果你在 Pi 上進行任何嚴肅的程式設計工作,最終可能會希望升級到 Linux 的兩大強力編輯器之一:vi 或 emacs。
vi 和 emacs 不僅是強大的編輯器,還可以作為 IDE(整合開發環境),具有關鍵字顏色標示/語法高亮顯示和自動補全功能。兩者都可以擴充套件和自訂;例如,emacs 內建超過 2,000 個命令,而 vi 則可以透過其多種分支和克隆進行自訂。實際上,vi 的一個克隆版本 Vim(Vi Improved),幾乎每個 Linux 發行版都包含了它,因為它比前身 vi 更像是一個 IDE。Emacs 可以透過 Lisp 擴充套件進行使用者程式化,但對於每種審美感受都有一個 vi 的克隆版本。
然而,emacs 和 Vim 之間存在著一場「戰爭」。Linux 和 Unix 使用者強烈偏好其中一個或另一個,並在討論或辯論每個優缺點時會變得非常激動。作為一名謹慎的作家,我將在此介紹兩個程式,但作為一名忠實的 emacs 使用者,我會盡力讓你遠離 Vim 的陰影。當我們在書中討論程式和指令碼時,我將不提及它們是如何編寫的,只描述結果如何。你甚至可能決定喜歡 Pi 的 Leafpad,這樣也是完全可以接受的。
Vim vs. Emacs vs. Nano
Vim 是一款模態編輯器。它有兩種模式:插入模式和一般模式。在插入模式下,你的按鍵輸入會成為檔案的一部分;一般模式則用於控制編輯過程。例如,如果你在一般模式下輸入「i」,它會切換到插入模式;如果再次輸入「i」,則會在遊標位置放置「i」,就像你期望一款文字編輯器應該工作的一樣。透過在這兩種模式之間切換來建立和編輯檔案。
Emacs 相反則擁有一個更直觀的介面。你可以使用箭頭鍵在檔案中移動,當你按下鍵時,它會出現在遊標位置處。特殊命令如複製/貼上、儲存等需要按住 Ctrl 鍵後接續其他鍵序列來呼叫,通常以「x」開頭。例如,如果你想儲存目前檔案時需要先按 Ctrl-x 再按 Ctrl-s ,如 emacs 選單中所示 C-x C-s 。
Nano 則是更直觀易懂的文字編輯器之中最直覺的一款。您可以像其他任何編輯器一樣直接輸入文字 ,並在螢幕底部顯示所需命令。
如果想嘗試其中或全部三者(在做出決定之前嘗試總是個好主意),請確保它們已安裝 。要做到這一點 ,首先輸入
sudo apt-get install emacs
以及
sudo apt-get install vim
Vim 應該預裝在 Pi 上 ,與 Nano 一樣 ; Emacs 卻並非如此 。請注意 ,它是一個相當大的下載 ,因此安裝它及其依賴項可能需要一些時間 。 去喝杯咖啡或者吃個晚餐 ,等回來的時候它應該已經完成。
vim 編輯範例
vim testfile.txt
如同之前提到的一樣 vim 在終端機環境下開啟而非另開視窗可能會讓人感到困惑,
vim testfile.txt
以上指令後應該能看到類別似圖二-4 的空白檔案
vim 編輯內容解密:
- 開啟檔案:
vim testfile.txt指令將開啟testfile.txt檔案。 - 切換到插入模式:初始狀態下 Vim 是處於正常模式(Normal mode),無法進行編輯操作。需要先按下
i鍵進入插入模式(Insert mode),才能開始編寫文字。 - 傳回正常模式:編寫完成後需要再次按下
Esc鍵傳回正常模式。 - 儲存與離開:首先確認已處於正常模式(按
Esc鍵至少一次),然後輸入:w按下 Enter 鍵儲存檔案內容 (或:x按下 Enter 鍵同時儲存並離開)。
Vim 是有學習曲線的一款工具, 一開始可能需要花費一些時間去適應其不同的操作模式, 但是當熟悉之後, 有很多網路上的教學資源可以幫助您充分發揮其潛力。
emacs 編輯範例
emacs testfile.txt
此指令將尋找 testfile.txt 檔案, 若存在則開啟, 若不存在則新建並開啟, 您應該看到類別似圖二-5 的空白畫面.
emacs 編輯內容解密:
- 開啟檔案:
emacs testfile.txt指令將開啟testfile.txt檔案。 - 直接編輯:與 Vim 不同的是, Emacs 在開啟檔案後即可直接開始編輯 , 無須切換至其他模式。
- 常用命令:Table 2-3 中列出了 Emacs 中最常用的命令:
- 新建/開啟檔案:Ctrl+x + Ctrl+f
- 關閉檔案:Ctrl+x + Ctrl+c
- 儲存檔案:Ctrl+x + Ctrl+s
- 剪下:Ctrl+w
- 複製:Alt+w
- 貼上:Ctrl+y
- 移至行首:Ctrl+a
- 移至行尾:Ctrl+e
- 開始/結束選取區域:Ctrl+space
從以上介紹可以看出 Vi 和 Emacs 各有優勢和缺點, Vi 需要一定程度學習曲線卻具有高效率強大功能 , Emacs 則更直觀易上手對新手更友善 .
此圖示
graph TD;
C[C]
D[D]
E[E]
A[開始] --> B[選擇編輯器];
B --> C{Vim};
B --> D{Emacs};
B --> E{Nano};
C --> F[進入正常模式];
F --> G[按i進入插入模式];
G --> H[開始編輯];
H --> I[按Esc傳回正常模式];
I --> J[:w儲存或:x儲存並離開];
D --> K[直接開始編輯];
E --> L[直接開始編輯, 按鍵提示顯示於螢幕底部];
此圖示內容解密:
- **開始選擇流程:**圖表從「開始」節點起始, 接著進入「選擇編輯器」決定使用哪款編輯工具, 分別為 Vim、Emacs 或 Nano 。
- **Vim 編輯流程:**如果選擇了 Vim ,則進入正常模式(F),接著按
i鍵進入插入模式(G),開始編輯(H)。完成編輯後按Esc鍵傳回正常模式(I),然後使用:w儲存或:x儲存並離開(J)。 - **Emacs 編輯流程:**如果選擇了 Emacs ,則直接開始編輯(K)。
- **Nano 編輯流程:**如果選擇了 Nano ,則直接開始編輯(L),且按鍵提示會顯示在螢幕底部以供參考。