Agentic Research
首頁/工具/Terminal、Shell、CLI:三個詞的差別,與十行保命指令

Terminal、Shell、CLI:三個詞的差別,與十行保命指令

2026/09/3011 分鐘Bryan Chan最後更新 2026/09/30
這篇屬於工具主題入門CLITerminal

安裝教學的第一行幾乎總是「打開 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。它會停掉前景程序,視窗還在。

怎麼讀錯誤訊息

這是本篇最省時間的一段。新手看錯誤訊息的順序通常是錯的 —— 從第一行開始逐字讀,然後被淹沒。

正確的順序是倒過來:

  1. 先看最後一行。 多數工具把真正的結論放在最後,例如 Error: cannot find module 'xyz' 或 Permission denied。
  2. 找第一個 Error 或 error:。 中間幾百行常常是堆疊追蹤(stack trace),對你沒用;你要的是第一個出錯點。
  3. 找檔名與行號。 形如 File "app.py", line 42 或 src/main.ts:17:5。有行號就直接去看那一行。
  4. 只讀你看得懂的部分。 看不懂的中間段落直接跳過,不是你的問題。

幾種最常見的結論與對應動作:

最後一行長這樣通常是先做什麼
command not found沒裝,或裝了但 PATH 沒收錄which 那個指令(見第六行)
Permission denied檔案權限不對,或需要執行權ls -l 看權限;不要直接上 sudo
No such file or directory你在錯的資料夾,或路徑打錯pwd 確認位置
ModuleNotFoundErrorPython 套件沒裝,或裝到了别的環境確認你在正確的 venv 裡
EADDRINUSE / address already in use那個 port 已經被佔用換 port,或找出佔用的程序
401 / UnauthorizedAPI key 錯或沒設檢查 API Key 與環境變數
429超過速率限制等,或降低請求頻率

新手最貴的一個習慣

把網路上抄來的指令直接貼上執行,不看它會動到什麼。

這在多數情況下沒事,所以習慣會養成。直到某一天你貼到一行 rm -rf 開頭、或 curl … | bash 的東西 —— 前者會刪檔案,後者是「下載一段腳本然後立刻用你的權限執行它」,你完全不知道裡面寫了什麼。

養成兩個習慣就夠了:

  1. 看到 rm、sudo、curl … | bash、chmod 777、> /dev/ 這幾個關鍵字就停下來。 先搞懂再按 Enter。
  2. 跑之前先 pwd。 知道自己在哪,才知道指令會動到哪裡。

這跟 AI 工具特別相關:Agent 會幫你下指令,而你按同意。如果你看不懂它要下什麼,那個同意就沒有意義。這是 Permission Gate(權限閘門) 存在的原因 —— 但閘門只能擋住「危險的動作」,擋不住「你以為它安全」。

一個練習

十分鐘,做完你就有底了:

  1. 打開 Terminal,pwd 看自己在哪
  2. mkdir cli-practice && cd cli-practice 建一個練習資料夾進去
  3. echo "hello" > test.txt 建一個檔案
  4. cat test.txt 確認內容
  5. ls -la 看到它
  6. grep hello test.txt 找到那行
  7. cd .. 回上一層,pwd 確認位置變了
  8. rm -r cli-practice 清掉(注意:這一步會刪掉整個資料夾,先確認你 pwd 在對的地方)

這八步跑完,你已經用過本篇十行裡的七行。剩下的三行(which、echo $?、--help)會在你要裝第一個 AI 工具時自然用上。

下一步