安裝教學的第一行幾乎總是「打開 Terminal,輸入以下指令」。如果你不知道 Terminal 是哪個視窗、也不知道輸入之後該看到什麼,後面每一步都是在賭。
這篇解決三件事:把 Terminal(終端機)、Shell(殼層)、CLI(命令列介面) 三個詞分清楚;給你十行真的夠用的指令;以及教你怎麼讀錯誤訊息 —— 最後這個最省時間。
不需要任何程式基礎。
三個詞的差別
這三個詞被混用得最厲害,但分清楚只要一句話:
| 詞 | 它是什麼 | 類比 |
|---|---|---|
| Terminal(終端機) | 一個視窗,讓你在裡面打字 | 電視機 |
| Shell(殼層) | 視窗裡解讀並執行你指令的程式 | 電視機裡的頻道 |
| CLI(命令列介面) | 「用文字操作電腦」這種介面形式 | 「看電視」這件事本身 |
所以「打開 Terminal」是打開那個視窗;視窗裡跑的是 shell(macOS 近年預設 zsh,多數 Linux 是 bash,Windows 常見 PowerShell);而你正在用的這種介面形式叫 CLI。
為什麼這個差別重要:錯誤訊息通常來自 shell,不是來自 Terminal。而 bash 和 PowerShell 的語法不一樣 —— 變數寫法、路徑分隔符、引號規則都不同。網路上抄到一段指令卻跑不動,最常見的原因就是它是寫給另一種 shell 的。
打開它
- macOS:Command + 空白鍵,輸入
Terminal,Enter。(或在 應用程式 → 實用工具 裡) - Windows:開始功能表輸入
PowerShell。要跑 bash 語法的教學,需要 WSL 或 Git Bash。 - Linux:Ctrl + Alt + T,多數發行版通用。
打開後你會看到一行字,結尾是 % 或 $。那個符號叫提示字元(prompt),意思是「換你說了」。
十行保命指令
這十行不是「學命令列」,是讀懂安裝教學所需要的最小集合。全部在 macOS / Linux 通用;Windows PowerShell 的對應寫法列在括號裡。
一、我在哪
pwd # PowerShell: Get-Location
印出你目前所在的資料夾完整路徑。每次要跑一個會動到檔案的指令之前,先跑這個。 一半的「指令跑完東西不見了」事故,都是在錯誤的資料夾裡跑的。
二、這裡有什麼
ls -la # PowerShell: Get-ChildItem -Force
列出目前資料夾的內容。-a 包含以 . 開頭的隱藏檔(.env、.gitignore 這類),-l 是詳細格式(權限、大小、日期)。
三、去別的地方
cd notes # 進到 notes 子資料夾(相對路徑)
cd ~/projects # 到家目錄下的 projects(~ 代表家目錄)
cd .. # 回上一層
cd # 不加參數=回家目錄
路徑含空格時要加引號:cd "My Projects"。不加引號會被讀成兩個參數,然後報錯。
四、看一個檔案的內容
cat notes.txt # 全部印出來
head -20 notes.txt # 只看前 20 行
tail -20 app.log # 只看後 20 行(看 log 最常用)
五、找東西
grep "error" app.log # 在這個檔裡找含 error 的行
grep -r "TODO" . # 在目前資料夾遞迴找
find . -name "*.mdx" # 找檔名符合的檔案
六、這個程式裝在哪
which claude # PowerShell: where.exe claude
這是 command not found 的第一個診斷動作。 有印出路徑代表程式裝好了,只是 PATH 與路徑 裡沒有它;完全沒印才代表真的不在。搞反了就會開始無意義地重裝。
七、環境變數
echo $SHELL # 我用的 shell(PowerShell: $env:SHELL)
echo $OPENAI_API_KEY # 這個變數有沒有設
export OPENAI_API_KEY="sk-xxx" # PowerShell: $env:OPENAI_API_KEY="sk-xxx"
export 只在當前這個視窗有效,關掉就沒了。要長期有效得寫進 ~/.zshrc 或 ~/.bashrc,或者放進專案的 .env 檔(見 環境變數與 .env)。
在 A 視窗 export、卻在 B 視窗跑程式,是「我明明設了 key 卻說沒有」最常見的原因。
八、跑一個程式,看它的退出碼
some-command
echo $? # PowerShell: $LASTEXITCODE
0 代表成功,非 0 代表失敗(見 Exit Code(結束代碼))。腳本與 CI 都是靠這個數字判斷要不要繼續,不是靠讀輸出文字。
九、看說明
some-command --help
man ls # macOS / Linux 的完整手冊,q 離開
--help 是你最該養成習慣的指令。它比搜尋引擎準,而且一定是你手上這個版本的行為。
十、中斷與離開
Ctrl + C # 中斷正在跑的東西(不是關視窗)
Ctrl + D # 結束當前 shell(等於輸入 exit)
exit # 離開
一個指令卡住不動時,先按 Ctrl + C。它會停掉前景程序,視窗還在。
怎麼讀錯誤訊息
這是本篇最省時間的一段。新手看錯誤訊息的順序通常是錯的 —— 從第一行開始逐字讀,然後被淹沒。
正確的順序是倒過來:
- 先看最後一行。 多數工具把真正的結論放在最後,例如
Error: cannot find module 'xyz'或Permission denied。 - 找第一個
Error或error:。 中間幾百行常常是堆疊追蹤(stack trace),對你沒用;你要的是第一個出錯點。 - 找檔名與行號。 形如
File "app.py", line 42或src/main.ts:17:5。有行號就直接去看那一行。 - 只讀你看得懂的部分。 看不懂的中間段落直接跳過,不是你的問題。
幾種最常見的結論與對應動作:
| 最後一行長這樣 | 通常是 | 先做什麼 |
|---|---|---|
command not found | 沒裝,或裝了但 PATH 沒收錄 | which 那個指令(見第六行) |
Permission denied | 檔案權限不對,或需要執行權 | ls -l 看權限;不要直接上 sudo |
No such file or directory | 你在錯的資料夾,或路徑打錯 | pwd 確認位置 |
ModuleNotFoundError | Python 套件沒裝,或裝到了别的環境 | 確認你在正確的 venv 裡 |
EADDRINUSE / address already in use | 那個 port 已經被佔用 | 換 port,或找出佔用的程序 |
401 / Unauthorized | API key 錯或沒設 | 檢查 API Key 與環境變數 |
429 | 超過速率限制 | 等,或降低請求頻率 |
新手最貴的一個習慣
把網路上抄來的指令直接貼上執行,不看它會動到什麼。
這在多數情況下沒事,所以習慣會養成。直到某一天你貼到一行 rm -rf 開頭、或 curl … | bash 的東西 —— 前者會刪檔案,後者是「下載一段腳本然後立刻用你的權限執行它」,你完全不知道裡面寫了什麼。
養成兩個習慣就夠了:
- 看到
rm、sudo、curl … | bash、chmod 777、> /dev/這幾個關鍵字就停下來。 先搞懂再按 Enter。 - 跑之前先
pwd。 知道自己在哪,才知道指令會動到哪裡。
這跟 AI 工具特別相關:Agent 會幫你下指令,而你按同意。如果你看不懂它要下什麼,那個同意就沒有意義。這是 Permission Gate(權限閘門) 存在的原因 —— 但閘門只能擋住「危險的動作」,擋不住「你以為它安全」。
一個練習
十分鐘,做完你就有底了:
- 打開 Terminal,
pwd看自己在哪 mkdir cli-practice && cd cli-practice建一個練習資料夾進去echo "hello" > test.txt建一個檔案cat test.txt確認內容ls -la看到它grep hello test.txt找到那行cd ..回上一層,pwd確認位置變了rm -r cli-practice清掉(注意:這一步會刪掉整個資料夾,先確認你pwd在對的地方)
這八步跑完,你已經用過本篇十行裡的七行。剩下的三行(which、echo $?、--help)會在你要裝第一個 AI 工具時自然用上。
下一步
- 把這三個詞的定義與更多誤解讀完:Terminal(終端機)、CLI(命令列介面)、Shell(殼層)
- 為什麼
command not found九成不是沒裝好:PATH 與路徑 - API key 該放哪、放錯會怎樣:環境變數與 .env、API Key
- 認完字就動手:五分鐘設置你的 LLM 開發環境
- 想先看全景:開始之前:你只需要先認識這 20 個詞