上一章我們已經使用 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
常用操作包括:
| 操作 | 快捷鍵 |
|---|---|
| 離開 | 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
確認:
- 我在哪裡?
- 檔案是誰的?
- 目前 User 是誰?
- 需要什麼權限?
再用:
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 指令速查表
| 指令 | 用途 |
|---|---|
| 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. 本章重點整理
完成本章後,應該掌握:
- Raspberry Pi OS 可以使用 GUI Desktop 與 CLI Terminal。
- Raspberry Pi OS Lite 是沒有圖形桌面的 Command-Line Edition。
- Terminal 是 Raspberry Pi 系統管理的重要工具。
- Linux File System 從 / Root Directory 開始。
- /home 主要放一般 User 的個人資料。
- /etc 是重要 Configuration 區域。
- /var 常存放 Log、Cache 等可變資料。
- 現代 Raspberry Pi OS 的 boot partition 位於 /boot/firmware。
- pwd 查看目前 Directory。
- ls 查看 Directory 內容。
- cd 改變 Directory。
- mkdir 建立 Directory。
- touch 可以建立空白檔案。
- cp 用於 Copy。
- mv 可以 Move 或 Rename。
- rm 用於刪除,執行前必須確認目標。
- cat 與 less 可以閱讀文字檔案。
- nano 是很實用的 Terminal Text Editor。
- grep 可以搜尋文字內容。
- find 可以尋找檔案。
- Linux 權限包含 Read、Write、Execute。
- chmod 可以修改 Permission。
- chown 可以修改 Owner。
- root User 與 / Root Directory 是不同概念。
- sudo 應該只在真正需要較高權限時使用。
- df -h 可以查看儲存空間,Raspberry Pi 官方也建議在更新前用它確認空間。
- Raspberry Pi OS 使用 APT 管理軟體。
- sudo apt update 更新 Package List。
- Raspberry Pi 官方目前建議使用 sudo apt full-upgrade 更新套件。
- rpi-update 不是一般日常更新工具。
- sudo reboot 可以重新啟動。
- 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 接上螢幕、鍵盤與滑鼠。