第4章 Raspberry Pi OS 基本操作:桌面、Terminal 與 Linux 指令入門

發布日期: |更新日期:
文章主圖:第4章 Raspberry Pi OS 基本操作:桌面、Terminal 與 Linux 指令入門

上一章我們已經使用 Raspberry Pi Imager 完成 Raspberry Pi OS 安裝。

現在 Raspberry Pi 5 已經可以真正開機,進入:

Raspberry Pi OS Desktop

或使用:

Terminal

操作 Linux。

Raspberry Pi OS 的一般 Desktop 版本提供圖形化桌面環境;Raspberry Pi OS Lite 則是不包含圖形桌面的命令列版本。Raspberry Pi 官方目前也將 Desktop、Full 與 Lite 分成不同用途,其中 Lite 特別適合 Headless Server 與 Embedded System。

如果以前主要使用 Windows,剛接觸 Linux 時最容易產生一個想法:

為什麼有桌面和滑鼠可以用,還需要學 Terminal?

答案是:

因為 Terminal 是 Raspberry Pi 最重要的操作工具之一。

後面我們會進行:

  • Python
  • GPIO
  • I²C
  • SPI
  • UART
  • SSH
  • Flask
  • MQTT
  • SQLite
  • Camera
  • IoT

其中大量設定、安裝及除錯工作都會使用 Terminal。

因此,本章要建立的是整套 Raspberry Pi 課程非常重要的:

Linux 基礎能力

1. Raspberry Pi OS Desktop 是什麼?

如果上一章安裝的是:

Raspberry Pi OS 64-bit Desktop

開機之後會進入圖形化操作環境。

這和:

  • Windows
  • macOS

的操作概念相似。

畫面上可以看到:

  • Desktop
  • Application Menu
  • Taskbar
  • System Tray
  • File Manager
  • Terminal
  • Browser
  • Settings

Raspberry Pi 官方目前說明,完成圖形化系統設定後就會進入桌面環境,可以使用視窗、圖示與選單操作電腦。

因此你可以把 Raspberry Pi OS 理解為兩種主要操作方式:

Raspberry Pi OS
│
├── GUI
│   └── Desktop
│
└── CLI
    └── Terminal

GUI:

Graphical User Interface

CLI:

Command-Line Interface

兩者可以同時使用。

2. GUI 與 CLI 有什麼不同?

GUI

使用:

  • Mouse
  • Icon
  • Menu
  • Window
  • Button

例如要開啟一個資料夾:

File Manager
    ↓
Double Click
    ↓
Documents

CLI

使用文字指令。

例如:

cd ~/Documents

兩者結果可能完全相同。

差別只是操作方法。

3. 為什麼 Raspberry Pi 一定要學 Terminal?

因為很多 Raspberry Pi 工作用 Terminal 更直接。

例如更新系統:

sudo apt update

安裝軟體:

sudo apt install package-name

查看 IP:

hostname -I

遠端管理:

ssh user@raspberrypi

建立 Python 程式:

nano test.py

執行 Python:

python3 test.py

Raspberry Pi OS 官方目前使用 APT 作為命令列套件管理工具,可透過 Terminal 搜尋、安裝、更新及移除套件。

因此 Terminal 不只是「工程師看起來比較專業的黑色視窗」。

它是一個真正重要的:

系統管理介面。

4. Raspberry Pi OS Desktop 的主要區域

Raspberry Pi OS Desktop 可以先認識以下幾個地方:

Desktop
│
├── Raspberry Pi Menu
├── Taskbar
├── System Tray
├── File Manager
├── Browser
├── Terminal
└── Control Centre

系統設定可以透過 Desktop 的 Raspberry Pi Menu 進入:

Preferences
    ↓
Control Centre

也可以直接從 Terminal 執行:

sudo raspi-config

進行 Raspberry Pi 系統設定。這兩種設定入口目前都由 Raspberry Pi 官方支援。

5. File Manager 是什麼?

File Manager 就像 Windows 的:

File Explorer

可以使用圖形介面:

  • 建立資料夾
  • 開啟資料夾
  • 複製檔案
  • 移動檔案
  • 刪除檔案
  • 查看檔案

例如:

Home
│
├── Desktop
├── Documents
├── Downloads
└── Pictures

不過從這一章開始,我們會盡量同時學會 Terminal 操作。

因為:

File Manager 操作
       ↕
Terminal 指令

如果兩者都會,處理 Linux 系統問題會快很多。

6. Terminal 是什麼?

Terminal 是讓使用者輸入 Linux 指令的程式。

開啟後通常會看到類似:

jason@rpi5-lab:~ $

這不是錯誤訊息。

它叫:

Shell Prompt

7. Shell Prompt 怎麼看?

假設看到:

jason@rpi5-lab:~ $

可以拆成:

jason
  │
  └── Username

rpi5-lab
  │
  └── Hostname

~
│
└── Current Directory

$
│
└── Normal User Prompt

也就是:

使用者 jason,目前正在 rpi5-lab 這台電腦的 Home Directory。

8. Linux 是大小寫敏感的

Linux 一個很重要的觀念是:

Case Sensitive

例如:

Test.txt
test.txt
TEST.txt

可以是三個不同檔案。

同樣地:

Documents

與:

documents

也不一定是同一個 Directory。

這和部分 Windows 使用習慣不同。

所以之後輸入 Linux 指令時:

大小寫必須正確。

9. 第一個 Linux 指令:whoami

先在 Terminal 輸入:

whoami

例如回傳:

jason

代表目前登入的 Linux 使用者是:

jason

這個指令在確認:

  • Login User
  • sudo
  • Permission
  • SSH

問題時很好用。

10. hostname:這一台 Raspberry Pi 叫什麼名字?

輸入:

hostname

如果上一章設定:

rpi5-lab

就會得到:

rpi5-lab

Hostname 可以理解為:

這台電腦在系統與網路中的名稱。

11. hostname -I:查看 Raspberry Pi IP

輸入:

hostname -I

可能看到:

192.168.1.120

後面使用 SSH 時就可能使用:

ssh jason@192.168.1.120

所以這是一個非常值得記住的 Raspberry Pi 指令。

12. pwd:我目前在哪裡?

輸入:

pwd

pwd 可以顯示目前所在 Directory。

例如:

/home/jason

代表目前位置是:

/
└── home
    └── jason

可以把 pwd 理解為:

我現在站在哪個資料夾?

13. Linux 沒有 C: 嗎?

典型 Linux 檔案系統不是從:

C:\

開始。

而是從:

/

開始。

/ 稱為:

Root Directory

注意:

Root Directory

和:

root User

是兩件不同的事情。

14. Linux Directory Tree

Linux 檔案系統可以想像成一棵樹:

/
├── boot
├── dev
├── etc
├── home
│   └── jason
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── srv
├── sys
├── tmp
├── usr
└── var

最上方:

/

就是整個 Linux File System 的起點。

15. /home 是什麼?

/home 通常放一般使用者的個人資料。

例如使用者:

jason

Home Directory 通常會是:

/home/jason

裡面可能有:

/home/jason
├── Desktop
├── Documents
├── Downloads
└── Pictures

後面我們自己的:

  • Python
  • GPIO
  • Project
  • Sensor Data

也建議優先放在自己的 Home Directory 下。

16. ~ 是什麼?

Linux Shell 中:

~

通常代表目前使用者的:

Home Directory

例如:

cd ~

如果目前使用者是 jason,通常就是回到:

/home/jason

所以看到:

jason@rpi5-lab:~ $

通常表示目前就在自己的 Home Directory。

17. /etc 是什麼?

/etc 是 Linux 很重要的系統設定區域。

裡面會有大量:

  • System Configuration
  • Service Configuration
  • Network Configuration
  • Software Configuration

例如 APT 的軟體來源資訊位於 /etc/apt/ 相關路徑;Raspberry Pi 官方目前也說明 APT 會從 /etc/apt/sources.list 與 /etc/apt/sources.list.d/ 管理軟體來源。

因此看到:

/etc

要先想到:

Configuration

18. /var 是什麼?

/var 主要保存系統運作時會持續變化的資料。

常見:

/var/log
/var/cache
/var/lib

例如:

/var/log

通常與系統及服務 Log 有關。

而 Raspberry Pi OS 的 APT 已下載套件檔案則會使用 /var/cache/apt/archives;官方也提供 sudo apt clean 清理這些快取套件的方法。

後面做:

  • Apache
  • Flask
  • MQTT
  • Database
  • Server Debug

時,/var 會經常看到。

19. /boot/firmware 是 Raspberry Pi 很重要的目錄

目前 Raspberry Pi OS 中,boot partition 會掛載在:

/boot/firmware

例如 Raspberry Pi 的:

config.txt

目前位置就是:

/boot/firmware/config.txt

Raspberry Pi 官方硬體設定文件也以 /boot/firmware/ 作為目前 Raspberry Pi OS boot partition 的位置。

如果搜尋很舊的 Raspberry Pi 教學,可能會看到:

/boot/config.txt

因此照舊文章操作前,要確認文章對應的 Raspberry Pi OS 世代。

20. ls:查看目前資料夾

輸入:

ls

會列出目前 Directory 內容。

例如:

Desktop
Documents
Downloads
Pictures

如果想看更詳細資訊:

ls -l

可能看到:

drwxr-xr-x 2 jason jason 4096 Aug 17 20:00 Documents
-rw-r--r-- 1 jason jason   25 Aug 17 20:10 test.txt

這些資訊後面會用來了解 Linux Permission。

21. ls -a:顯示隱藏檔案

輸入:

ls -a

會連 Hidden File 一起顯示。

Linux 中檔名如果以:

.

開頭,通常會被視為 Hidden File。

例如:

.bashrc
.profile
.ssh

所以:

ls

可能看不到,

但:

ls -a

可以。

22. 最實用的 ls 組合之一:ls -lah

輸入:

ls -lah

可以同時:

  • 顯示詳細資料
  • 顯示 Hidden Files
  • 使用較容易閱讀的容量格式

例如:

4.0K
25M
1.2G

因此之後如果我要你先查看一個資料夾,很常會使用:

ls -lah

23. cd:切換 Directory

假設目前:

/home/jason

要進 Documents:

cd Documents

再輸入:

pwd

就可能看到:

/home/jason/Documents

這就是:

Change Directory

24. cd ..:回上一層

假設目前在:

/home/jason/Documents

輸入:

cd ..

會回到:

/home/jason

其中:

..

代表:

Parent Directory

上一層資料夾。

而:

.

代表:

Current Directory

目前資料夾。

25. 絕對路徑與相對路徑

Linux 有兩種非常重要的 Path 概念。

Absolute Path

從 / 開始:

/home/jason/Documents

例如:

cd /home/jason/Documents

不論目前在哪裡,都指定完整位置。

Relative Path

相對目前所在位置:

cd Documents

前提是:

Documents

就在目前 Directory 裡。

26. 使用 ~ 簡化 Home Path

以下:

cd /home/jason/Documents

也可以寫成:

cd ~/Documents

這樣就不用把 Username 寫死。

這對之後寫:

  • Shell Script
  • Python
  • 設定文件

很方便。

27. mkdir:建立 Directory

回到 Home:

cd ~

建立一個實驗目錄:

mkdir raspberrypi-lab

查看:

ls

應該會看到:

raspberrypi-lab

進去:

cd raspberrypi-lab

28. mkdir -p:一次建立多層 Directory

例如:

mkdir -p projects/python/chapter04

就可以一次建立:

projects
└── python
    └── chapter04

這比一層一層建立方便很多。

29. touch:快速建立空白檔案

在實驗資料夾中:

touch test.txt

查看:

ls -l

就會看到:

test.txt

touch 本來也能更新檔案時間資訊,但初學階段可以先把它當作建立空白檔案的方便工具。

30. echo:寫入簡單文字

可以輸入:

echo "Hello Raspberry Pi"

Terminal 會顯示:

Hello Raspberry Pi

如果使用:

echo "Hello Raspberry Pi" > hello.txt

再:

cat hello.txt

會得到:

Hello Raspberry Pi

其中:

>

代表將輸出重新導向檔案。

注意:

> 會覆寫目標內容。

如果要追加:

echo "Linux is running" >> hello.txt

>> 表示:

Append

31. cat:查看文字檔內容

例如:

cat hello.txt

適合查看短文字檔。

也可以:

cat /etc/os-release

查看 Raspberry Pi OS 的作業系統資訊。

例如我們上一章就使用:

cat /etc/os-release

確認 Raspberry Pi OS / Debian 版本。

32. less:閱讀較長檔案

如果檔案很長:

less filename.txt

比 cat 更方便。

可以上下瀏覽。

離開 less:

q

所以簡單記:

短檔案 → cat

長檔案 → less

33. head 與 tail

查看檔案前面:

head filename.txt

查看檔案最後:

tail filename.txt

查看最後 20 行:

tail -n 20 filename.txt

這在未來查看:

  • Log
  • Sensor Data
  • Server Output

非常實用。

34. cp:複製檔案

先建立:

echo "Raspberry Pi" > original.txt

複製:

cp original.txt backup.txt

查看:

ls

會看到:

original.txt
backup.txt

檢查內容:

cat backup.txt

35. 複製 Directory

如果要複製整個資料夾,通常需要遞迴處理:

cp -r source-directory backup-directory

例如:

cp -r projects projects-backup

建立一份整個專案目錄的副本。

在修改重要專案前先備份,是很好的操作習慣。

36. mv:移動或重新命名

mv 有兩個非常常見的用途。

Rename

例如:

mv test.txt chapter04.txt

就是把:

test.txt

改名成:

chapter04.txt

Move

例如:

mv chapter04.txt ~/Documents/

就會將檔案移動到 Documents。

所以可以記成:

mv = Move / Rename

37. rm:刪除檔案

例如:

rm test.txt

會刪除:

test.txt

這個指令一定要小心。

因為 Terminal 中的 rm 並不是:

先放到 Windows Recycle Bin

再讓你慢慢恢復。

因此執行前應先:

ls

確認目標。

38. rm -r:刪除 Directory

要刪除一個包含內容的資料夾可能會使用:

rm -r directory-name

例如:

rm -r old-project

這會遞迴刪除 Directory 及其內容。

初學階段不要養成隨便使用:

rm -rf

的習慣。

尤其看到網路上的指令,不了解用途前:

不要直接貼到 sudo 後面執行。

39. rmdir:刪除空 Directory

如果資料夾完全是空的:

rmdir empty-directory

即可。

如果裡面還有檔案,rmdir 通常會拒絕刪除。

對初學者來說,這有時比直接 rm -r 更安全。

40. nano:Terminal 文字編輯器

Linux 很多操作需要修改:

  • .conf
  • .txt
  • .py
  • .sh

Raspberry Pi 使用 Terminal 時,一個非常適合初學者的 Editor 是:

nano

例如:

nano hello.txt

就可以直接編輯文字。

GNU nano 是使用鍵盤操作的 modeless 文字編輯器,其畫面底部會顯示常用快捷鍵。

41. nano 最常用快捷鍵

在 nano 畫面中通常會看到:

^X
^O

其中:

^

代表:

Ctrl

因此:

^X

就是:

Ctrl + X

常用操作包括:

nano 常用快捷鍵
操作 快捷鍵
離開 Ctrl + X
Write Out / 儲存到檔案 Ctrl + O
搜尋 Ctrl + F(新版 nano)
Cut Ctrl + K
Paste / Uncut Ctrl + U
Help 依目前版本畫面提示

GNU nano 的實際按鍵可能隨版本更新,因此操作時最好同時查看 nano 視窗底部顯示的快捷鍵;目前 nano 官方文件也列有 Ctrl+O、Ctrl+X、Ctrl+K、Ctrl+U 等操作。

42. 用 nano 建立第一個 Linux 文字檔

執行:

nano raspberrypi.txt

輸入:

Raspberry Pi 5
Raspberry Pi OS
Linux
Python
GPIO

按:

Ctrl + O

依畫面提示確認檔名。

再:

Ctrl + X

離開。

接著:

cat raspberrypi.txt

應該看到:

Raspberry Pi 5
Raspberry Pi OS
Linux
Python
GPIO

43. grep:從文字中尋找資料

假設:

cat raspberrypi.txt

內容很多。

要找:

Python

可以:

grep "Python" raspberrypi.txt

這個概念以後非常重要。

因為我們會用:

grep

從:

  • Log
  • Configuration
  • Source Code
  • Apache Log
  • Bot Log

中找指定字串。

44. find:搜尋檔案

如果忘了某個檔案放在哪裡,可以使用:

find ~/ -name "raspberrypi.txt"

例如可能得到:

/home/jason/raspberrypi-lab/raspberrypi.txt

也可以搜尋 PHP:

find ~/ -name "*.php"

或者 Python:

find ~/ -name "*.py"

find 是 Linux 系統維護非常實用的工具。

45. Linux File Permission 是什麼?

現在回到:

ls -l

可能看到:

-rw-r--r-- 1 jason jason 100 Aug 17 20:00 test.txt

其中:

-rw-r--r--

就是:

Permission

可以拆成:

- rw- r-- r--
│ │   │   │
│ │   │   └── Others
│ │   └────── Group
│ └────────── Owner
└──────────── File Type

46. r、w、x 是什麼?

Linux 權限的三個重要符號:

r = Read
w = Write
x = Execute

因此:

rw-

表示:

Read
Write
No Execute

而:

r-x

表示:

Read
No Write
Execute

47. 644 是什麼?

Linux 管理中常看到:

chmod 644 file.txt

其概念為:

6 = rw-
4 = r--
4 = r--

所以:

644

Owner  = Read + Write
Group  = Read
Others = Read

常用於一般不需要直接執行的檔案。

48. 755 是什麼?

例如:

chmod 755 script.sh

代表:

7 = rwx
5 = r-x
5 = r-x

即:

Owner  = Read + Write + Execute
Group  = Read + Execute
Others = Read + Execute

因此常見在需要執行的 Script 或 Directory 權限。

49. 不要為了解決權限問題就全部 chmod 777

有些初學者遇到:

Permission denied

第一個反應就是:

chmod 777 ...

這不是好的處理方式。

777 意味著非常寬鬆的權限。

比較好的處理方式應先檢查:

ls -l

再確認:

誰是 Owner?
誰需要 Write?
誰需要 Execute?

然後只開啟真正需要的權限。

這在未來:

  • Apache
  • PHP
  • Flask
  • Web Server
  • Database

特別重要。

50. chmod:修改 Permission

例如:

chmod 644 test.txt

再:

ls -l test.txt

查看變化。

如果是一個 Shell Script:

chmod 755 test.sh

就可以加入 Execute Permission。

51. chown:修改 Owner

假設某個檔案不是你的:

ls -l file.txt

看到:

root root

可能需要修改 Owner。

例如:

sudo chown jason:jason file.txt

表示:

Owner = jason
Group = jason

但是:

不要看到 root 就立即 chown。

有些 System File 本來就應該由 root 擁有。

52. root User 是什麼?

Linux 中:

root

是具有非常高系統權限的管理者帳號。

它與:

/

Root Directory 不同。

可以這樣記:

/
=
Root Directory


root
=
Administrative User

不要混在一起。

53. sudo 是什麼?

一般使用者沒有權限修改所有 System File。

所以有些管理指令會使用:

sudo

例如:

sudo apt update

或:

sudo reboot

sudo 讓符合授權條件的使用者以較高權限執行指定管理工作。

因此:

nano file.txt

與:

sudo nano file.txt

不是完全相同的權限層級。

54. 不要所有指令都加 sudo

這是一個非常重要的習慣。

例如建立自己的檔案:

nano ~/test.txt

通常不需要:

sudo nano ~/test.txt

否則可能讓本來應該屬於你的檔案變成:

root

擁有。

所以:

需要系統管理權限
      ↓
sudo


自己的檔案
      ↓
一般使用者

權限應該越小越好。

55. Permission denied 怎麼處理?

如果看到:

Permission denied

不要立刻亂加 sudo。

先做:

pwd

再:

ls -l

確認:

  1. 我在哪裡?
  2. 檔案是誰的?
  3. 目前 User 是誰?
  4. 需要什麼權限?

再用:

whoami

確認 User。

這是一個比:

sudo + chmod 777

健康很多的 Debug 流程。

56. df -h:查看 Storage

輸入:

df -h

可以查看 File System 使用量。

例如:

Filesystem      Size  Used Avail Use%
/dev/mmcblk0p2   58G   12G   43G  22%

Raspberry Pi 官方在 APT 更新說明中也建議使用 df -h 確認更新前是否有足夠儲存空間。

這對使用 microSD 的 Raspberry Pi 特別重要。

57. free -h:查看 RAM

可以使用:

free -h

快速查看記憶體使用狀況。

例如:

total   used   free
Mem:           7.8G   ...
Swap:          ...

這對後面執行:

  • Browser
  • Database
  • OpenCV
  • AI
  • Server

時很有用。

58. uname:查看 Linux Kernel

輸入:

uname -a

可以查看 Kernel 與系統架構相關資訊。

如果只想看 Architecture:

uname -m

64-bit Arm 系統通常會看到:

aarch64

Raspberry Pi OS 的正常 APT 更新也會更新 Raspberry Pi 官方穩定 Linux Kernel 與 Firmware。

59. cat /etc/os-release:確認作業系統

輸入:

cat /etc/os-release

可以查看:

  • OS Name
  • Version
  • Debian Version
  • Codename

等系統資訊。

對我們這套課程而言,這是一個非常重要的 Debug 指令。

以目前 Raspberry Pi OS 世代來說,本系列採用前一章建立的 Raspberry Pi OS 64-bit 環境;Raspberry Pi 官方目前也以 Bookworm → Trixie 作為主要版本升級範例。

60. clear:清除 Terminal 畫面

Terminal 用久後會有很多文字。

可以:

clear

清理畫面。

這不會刪除檔案。

只是把目前 Terminal 顯示整理乾淨。

61. history:查看先前指令

輸入:

history

可以看到之前輸入過的一批 Shell Commands。

另外可以使用鍵盤:

↑

叫回上一個指令。

例如剛執行:

sudo apt update

要再查看時,可以按:

↑

而不是重新打一遍。

62. Tab 自動補完非常重要

假設有一個 Directory:

raspberrypi-project

不需要每次全部打完。

可以輸入:

cd rasp

再按:

Tab

Shell 可以依目前可辨識項目補完。

這能減少:

  • 打錯字
  • 大小寫錯
  • 長路徑錯誤

所以操作 Linux 時:

要習慣使用 Tab。

63. 檔名有空白怎麼辦?

例如檔案:

Raspberry Pi.txt

如果輸入:

cat Raspberry Pi.txt

Shell 會把它拆成兩個 Argument。

應使用:

cat "Raspberry Pi.txt"

或者:

cat Raspberry\ Pi.txt

因此在 Linux Server、Script 或程式專案中,我通常建議檔名避免大量空格。

例如:

raspberry_pi.txt

或:

raspberry-pi.txt

通常更方便。

64. man:Linux 的說明書

如果不知道某個指令怎麼用,可以試:

man ls

或:

man cp

進入 Manual Page。

離開通常使用:

q

因此遇到陌生指令時,不必永遠只靠 Google:

Command
   ↓
man command

也是 Linux 很重要的學習方式。

65. –help 也很好用

很多指令可以:

ls --help

例如:

cp --help

這通常會顯示:

  • Options
  • Usage
  • Parameter

所以一個陌生指令可以先:

command --help

或者:

man command

了解之後再執行。

66. APT 是什麼?

Raspberry Pi OS 使用:

APT

管理軟體套件。

官方目前明確將 APT 列為 Raspberry Pi OS Terminal 的預設 Package Manager,可用來:

  • Search
  • Install
  • Update
  • Remove

Software Package。

這代表 Linux 不需要像 Windows 一樣,每個軟體都自己去網站下載 Installer。

很多程式可以直接:

sudo apt install package-name

67. sudo apt update 在做什麼?

輸入:

sudo apt update

它主要是:

更新本機套件清單。

也就是向目前設定的 Software Repository 確認:

有哪些 Package?
有哪些新版本?

它本身不等於把所有已安裝軟體全部升級。

Raspberry Pi 官方目前也將 sudo apt update 定義為先更新可用 Package List 的第一個步驟。

68. sudo apt full-upgrade

在:

sudo apt update

之後:

sudo apt full-upgrade

會更新目前已安裝套件。

Raspberry Pi 官方目前特別建議 Raspberry Pi OS 使用:

full-upgrade

而不是只依賴普通:

upgrade

因為 Raspberry Pi OS 的 Package Dependency 可能需要額外處理。

所以本系列的系統更新標準流程:

sudo apt update
sudo apt full-upgrade

69. apt install:安裝軟體

例如未來需要某個套件:

sudo apt install package-name

APT 會:

找到 Package
      ↓
處理 Dependency
      ↓
下載
      ↓
安裝

Raspberry Pi 官方目前也是以:

sudo apt install <package-name>

作為標準套件安裝方式。

70. apt remove 與 apt purge

移除:

sudo apt remove package-name

如果連相關 Configuration 都希望一併清除:

sudo apt purge package-name

Raspberry Pi 官方文件目前也區分 remove 與 purge:remove 移除 Package,而 purge 會進一步移除相關設定資料。

使用 purge 前應先確定真的不需要那些設定。

71. apt clean

APT 下載的 .deb Package 會佔用 Storage。

需要釋放空間時可以:

sudo apt clean

Raspberry Pi 官方目前說明 APT 下載套件會存於:

/var/cache/apt/archives

並提供 sudo apt clean 清理舊下載檔案。

microSD 容量不大時特別實用。

72. 一般不要使用 rpi-update 更新系統

如果搜尋 Raspberry Pi 網路教學,很可能會看到:

sudo rpi-update

但它不是一般日常更新的首選。

Raspberry Pi 官方目前明確說明,rpi-update 主要用於:

  • Experimental Firmware
  • Pre-release Kernel
  • Development
  • Specific Bug Testing

一般使用者應透過:

sudo apt update
sudo apt full-upgrade

更新穩定版軟體、Kernel 與 Firmware。

73. reboot 與 poweroff

重新啟動:

sudo reboot

正常關機:

sudo poweroff

Raspberry Pi 官方目前同樣提供這兩個 Command-Line Shutdown 指令。

Pi 5 使用 Linux File System,所以應先正常 Shutdown,再斷電。

不要把:

直接拔 USB-C

當成標準關機方式。

74. Raspberry Pi 5 Power Button

如果使用 Raspberry Pi 5,官方目前支援:

  • 單按 Power Button:開啟 Shutdown Options
  • 快速雙按:Shutdown

也可以從 Raspberry Pi OS Desktop 選:

Shutdown
Reboot
Lock Screen
Logout

因此 Desktop 與 Terminal 都有正常關機方法。

75. 本章實作:建立自己的 Raspberry Pi Linux 實驗區

現在把本章學到的指令實際操作一次。

回 Home:

cd ~

建立:

mkdir -p raspberrypi-course/chapter04

進入:

cd raspberrypi-course/chapter04

確認:

pwd

應該類似:

/home/jason/raspberrypi-course/chapter04

76. 建立第一份實驗文字檔

輸入:

nano linux-notes.txt

寫入:

Raspberry Pi OS
Linux
Terminal
Python
GPIO
I2C
SPI
UART
MQTT

儲存並離開。

查看:

cat linux-notes.txt

77. 複製備份

執行:

cp linux-notes.txt linux-notes-backup.txt

查看:

ls -lah

現在應該有:

linux-notes.txt
linux-notes-backup.txt

78. 建立 Backup Directory

執行:

mkdir backup

移動備份:

mv linux-notes-backup.txt backup/

查看:

ls -lah

再:

ls -lah backup

79. 搜尋文字

找出:

GPIO

使用:

grep "GPIO" linux-notes.txt

應該得到:

GPIO

再找 MQTT:

grep "MQTT" linux-notes.txt

80. 完整檢查自己的 Raspberry Pi

現在可以依序執行:

whoami
hostname
hostname -I
pwd
uname -m
cat /etc/os-release
df -h
free -h

這八個 Command 已經可以提供非常多 Raspberry Pi 系統資訊。

81. Linux 初學最重要的 Debug 思維

遇到問題時,不要立刻:

重灌

也不要先:

chmod 777

或:

所有指令加 sudo

先回答五個問題:

1. 我是誰?
   whoami

2. 我在哪裡?
   pwd

3. 這裡有什麼?
   ls -lah

4. 檔案是誰的?
   ls -l

5. 系統是什麼?
   cat /etc/os-release

很多 Linux 問題到這裡就已經能找出方向。

82. Linux 指令安全原則

在 Raspberry Pi 上養成以下習慣:

原則一

不懂的指令:

不要直接執行。

原則二

先:

command --help

或:

man command

原則三

執行 rm 前:

pwd
ls -lah

原則四

不要看到 Permission Error 就:

chmod 777

原則五

不要所有事情都:

sudo

原則六

修改重要設定檔前先備份。

例如:

sudo cp config.conf config.conf.bak

再進行修改。

83. 本章常用 Linux 指令速查表

Raspberry Pi OS 常用 Linux 指令速查表
指令 用途
whoami 查看目前使用者
hostname 查看主機名稱
hostname -I 查看 IP
pwd 查看目前路徑
ls 列出檔案
ls -lah 詳細列出檔案
cd 切換 Directory
cd .. 上一層
cd ~ 回 Home
mkdir 建立 Directory
mkdir -p 建立多層 Directory
touch 建立空檔案
cat 顯示文字內容
less 分頁閱讀
head 查看檔案前段
tail 查看檔案尾端
cp Copy
mv Move / Rename
rm Remove File
rmdir Remove Empty Directory
nano 編輯文字
grep 搜尋內容
find 搜尋檔案
chmod 修改 Permission
chown 修改 Owner
sudo 以管理權限執行指定操作
df -h Disk Space
free -h Memory
uname -a Kernel / System
clear 清除 Terminal 畫面
history 查看指令歷史
man 查看 Manual
sudo apt update 更新 Package List
sudo apt full-upgrade 更新已安裝套件
sudo apt install 安裝 Package
sudo apt remove 移除 Package
sudo reboot Restart
sudo poweroff Shutdown

84. 本章重點整理

完成本章後,應該掌握:

  1. Raspberry Pi OS 可以使用 GUI Desktop 與 CLI Terminal。
  2. Raspberry Pi OS Lite 是沒有圖形桌面的 Command-Line Edition。
  3. Terminal 是 Raspberry Pi 系統管理的重要工具。
  4. Linux File System 從 / Root Directory 開始。
  5. /home 主要放一般 User 的個人資料。
  6. /etc 是重要 Configuration 區域。
  7. /var 常存放 Log、Cache 等可變資料。
  8. 現代 Raspberry Pi OS 的 boot partition 位於 /boot/firmware。
  9. pwd 查看目前 Directory。
  10. ls 查看 Directory 內容。
  11. cd 改變 Directory。
  12. mkdir 建立 Directory。
  13. touch 可以建立空白檔案。
  14. cp 用於 Copy。
  15. mv 可以 Move 或 Rename。
  16. rm 用於刪除,執行前必須確認目標。
  17. cat 與 less 可以閱讀文字檔案。
  18. nano 是很實用的 Terminal Text Editor。
  19. grep 可以搜尋文字內容。
  20. find 可以尋找檔案。
  21. Linux 權限包含 Read、Write、Execute。
  22. chmod 可以修改 Permission。
  23. chown 可以修改 Owner。
  24. root User 與 / Root Directory 是不同概念。
  25. sudo 應該只在真正需要較高權限時使用。
  26. df -h 可以查看儲存空間,Raspberry Pi 官方也建議在更新前用它確認空間。
  27. Raspberry Pi OS 使用 APT 管理軟體。
  28. sudo apt update 更新 Package List。
  29. Raspberry Pi 官方目前建議使用 sudo apt full-upgrade 更新套件。
  30. rpi-update 不是一般日常更新工具。
  31. sudo reboot 可以重新啟動。
  32. sudo poweroff 可以正常關機。

FAQ:Raspberry Pi OS 與 Linux 指令常見問題

Q1:學 Raspberry Pi 一定要會 Linux 嗎?

如果只進行極少量桌面操作,不需要一次學完整 Linux。

但如果要深入:

  • GPIO
  • Python
  • SSH
  • Flask
  • MQTT
  • Camera
  • Server
  • IoT

熟悉基本 Linux 指令會大幅降低後續操作與除錯難度。

Q2:Raspberry Pi OS 是 Linux 嗎?

是。

Raspberry Pi OS 是以 Debian Linux 為基礎的 Raspberry Pi 官方作業系統。官方目前提供 Desktop、Full 與 Lite,以及 32-bit / 64-bit 版本。

Q3:Terminal 和 Command Prompt 一樣嗎?

概念相似,都是透過文字命令操作系統。

但 Raspberry Pi OS 使用 Linux Shell,其:

  • Command
  • Path
  • Permission
  • File System

與 Windows CMD / PowerShell 有不少差異。

Q4:Raspberry Pi OS 可以不用 Desktop 嗎?

可以。

Raspberry Pi OS Lite 就是不包含 Graphical Desktop 的命令列版本,官方特別將它用於 Headless Server、Embedded System 與資源較有限的裝置。

Q5:如何知道自己目前在哪個 Directory?

使用:

pwd

Q6:如何知道目前有哪些檔案?

使用:

ls

更完整則:

ls -lah

Q7:如何回到自己的 Home Directory?

使用:

cd ~

也可以簡單使用:

cd

Q8:為什麼顯示 Permission denied?

通常表示目前使用者對該檔案或 Directory 沒有執行該操作所需的 Permission。

先查看:

whoami
ls -l

不要直接使用:

chmod 777

解決所有權限問題。

Q9:sudo 是不是 root?

sudo 是用來讓授權使用者以提高的權限執行指定 Command。

初學時最重要的觀念是:

不要所有指令都加 sudo。

Q10:Raspberry Pi OS 如何更新?

一般穩定更新使用:

sudo apt update
sudo apt full-upgrade

Raspberry Pi 官方目前推薦 APT 作為一般軟體、Kernel 與穩定 Firmware 更新方式。

Q11:要不要執行 sudo rpi-update?

一般使用者不要把它當成日常 Update 指令。

Raspberry Pi 官方目前將 rpi-update 定位為 Experimental / Pre-release Firmware、開發與特定 Bug Fix 測試用途。

Q12:Raspberry Pi 要怎麼正常關機?

Terminal:

sudo poweroff

重新啟動:

sudo reboot

也可以從 Desktop 的 Shutdown Options 操作。Pi 5 還支援 Power Button 的 Shutdown 操作。

Q13:為什麼 Raspberry Pi 不建議直接拔電源?

因為 Raspberry Pi OS 是完整 Linux 系統,可能正在寫入:

  • File
  • Log
  • Database
  • Configuration

正常 Shutdown 可以先停止程式與服務,再關閉系統。Raspberry Pi 官方也明確建議使用 Shutdown 選項後再斷開電源。

Q14:Linux 的 / 和 root 是同一個東西嗎?

不是。

/

是:

Root Directory

而:

root

是:

高權限管理使用者

這兩個概念名稱相似,但完全不同。

Q15:Raspberry Pi OS 的 config.txt 在哪裡?

目前 Raspberry Pi OS 的 boot partition 掛載於:

/boot/firmware

因此主要設定檔位置為:

/boot/firmware/config.txt

Raspberry Pi 官方目前也是使用這個位置。

結語

完成本章之後,我們已經跨過 Raspberry Pi 學習中非常重要的一道門檻。

前面三章學的是:

Raspberry Pi 是什麼
       ↓
Raspberry Pi 5 Hardware
       ↓
Raspberry Pi OS Installation

本章開始,我們正式學會:

Linux
 │
 ├── File System
 ├── Directory
 ├── Terminal
 ├── User
 ├── Permission
 ├── Package
 └── System Management

現在你已經能夠自己:

查看系統
    ↓
建立 Directory
    ↓
建立 File
    ↓
編輯 File
    ↓
Copy / Move
    ↓
搜尋資料
    ↓
查看 Permission
    ↓
安裝 Software
    ↓
更新 Raspberry Pi OS
    ↓
正常 Restart / Shutdown

這些看起來只是基本 Linux 指令,但它們會一直使用到整套 Raspberry Pi 課程最後。

後面當我們遇到:

Python 程式在哪裡?
GPIO 程式為什麼沒有權限?
SSH 為什麼登入不到?
Flask 設定檔在哪裡?
MQTT Log 在哪裡?
Database 還剩多少 Storage?
Camera Service 為什麼沒有啟動?

都會回到本章學到的:

whoami
pwd
ls
cat
grep
find
sudo
chmod
df

來尋找答案。

但是到目前為止,我們主要仍是在:

操作 Raspberry Pi 本身。

下一章會開始讓 Raspberry Pi 真正成為:

可以從其他電腦遠端管理的 Linux 主機。

下一章

第 5 章 Raspberry Pi 網路設定與 SSH 遠端登入完整教學

下一章將正式學習:

  • Raspberry Pi Ethernet
  • Raspberry Pi Wi-Fi
  • IP Address
  • IPv4
  • DHCP
  • Default Gateway
  • DNS
  • Hostname
  • .local
  • ip addr
  • ip route
  • hostname -I
  • ping
  • NetworkManager 基本概念
  • SSH 是什麼
  • 開啟 SSH Server
  • Windows SSH Client
  • SSH Username / Password
  • SSH Public Key
  • ssh-keygen
  • authorized_keys
  • Headless Raspberry Pi
  • SSH 安全基本設定
  • SSH 連線失敗排查
  • 固定 IP 與 DHCP Reservation 基本概念

完成第 5 章之後,就可以從 Windows、macOS 或另一台 Linux 電腦,透過網路直接管理 Raspberry Pi,不再需要每次替 Raspberry Pi 接上螢幕、鍵盤與滑鼠。

下一步學習

不要停在這一篇,接著把內容做成自己的實作

目前主題:Arduino。從完整學習路線、免費資源、會員下載,再接到實作所需材料。

同系列:Raspberry-Pi |  已是會員?直接前往 Getfile
相關資源與會員文章下載
文章可免費閱讀;下載完整 DOCX 或 PDF 需登入免費基本會員。
會員免費下載 DOCX 會員免費 PDF/列印

← 回文章列表