Agentic Research
首頁/學習/Terminal 是什麼:你打開的那個視窗裡,每一樣東西的名字

Terminal 是什麼:你打開的那個視窗裡,每一樣東西的名字

2026/09/3013 分鐘Bryan Chan最後更新 2026/09/30
這篇屬於學習主題入門TerminalCLI終端機

你照著安裝教學做了第一步:打開 Terminal。

然後你看到一個視窗,深色背景,左上角有一行字,結尾是一個符號,游標在閃。

教學的下一步是「輸入以下指令」。你輸入了,按了 Enter,畫面多了幾行字。但你不知道那幾行字是成功還是失敗,也不知道接下來該看哪裡。

這篇解決的就是這件事。它不是指令清單 —— 十行保命指令的清單與常見錯誤對照表在 Terminal、Shell、CLI:三個詞的差別 裡已經有了,這篇不重複。

這篇做的是把你眼前那個視窗逐行拆開,告訴你每一樣東西叫什麼名字、它在告訴你什麼。認得畫面,比背指令重要得多。

那個視窗裡其實有兩個東西

多數教學把 Terminal 當成一個東西講,所以新手永遠搞不清。它其實是兩層:

外面那一層是視窗,就是你打開的那個應用程式。它負責顯示字、接收你的鍵盤輸入、讓你調整字體大小與顏色。它自己什麼都不會做。這一層叫 Terminal(終端機)。

裡面跑著一個程式,負責讀懂你打的那一行、然後去執行。這一層叫 Shell(殼層)。macOS 近年預設是 zsh,多數 Linux 是 bash,Windows 常見的是 PowerShell。

「用打字而不是點滑鼠來指揮電腦」這種介面形式,叫 CLI(命令列介面)(命令列介面)。

這個區分不是學究式的。它有一個很實際的後果:錯誤訊息通常來自 shell,不是來自那個視窗。 而 zsh、bash、PowerShell 的語法不一樣 —— 變數怎麼寫、路徑用哪個符號分隔、引號的規則都不同。你從網路上抄到一段指令卻跑不動,最常見的原因是它是寫給另一種 shell 的。

怎麼知道自己在哪一種 shell 裡:看提示字元(下一段),或直接問它。

為什麼打字可以做事

這是最多人問、最少人回答的問題。答案比你以為的簡單,而且它不是魔法,是一個非常短的協議。

你打了一行字,按 Enter。shell 做的事是:

  1. 把這一行按空白切成好幾個詞。
  2. 第一個詞是「要跑哪個程式」。 shell 拿這個詞去一份地址清單(PATH 與路徑)裡找,找到對應的執行檔。
  3. 剩下的詞全部當成「交給那個程式的參數」。 shell 自己不解讀它們,原樣遞過去。
  4. 啟動那個程式,把它的輸出印在畫面上,等它結束。
  5. 印出提示字元,換你說了。

就這五步。所以:

  • shell 不懂英文。 它不懂「幫我列出所有檔案」。它只懂「第一個詞是程式名,後面是參數」。
  • command not found 的意思是第 2 步失敗了 —— 那份地址清單裡沒有任何一個資料夾含有叫這個名字的程式。它不代表你打錯了字(雖然也可能是),更不代表程式壞了。
  • 路徑含空格一定要加引號,因為第 1 步是按空白切的。cd My Projects 會被切成三個詞:cd、My、Projects,於是 shell 以為你要 cd 到名叫 My 的地方,還多給了一個它不需要的參數。
  • 同一行指令在不同資料夾跑,結果會不同 —— 因為很多程式處理的是「目前所在目錄」裡的檔案。這就是下一段。

逐行拆解你看到的畫面

這是一個典型的 shell 工作階段(示意範例,不是任何特定工具的真實輸出):

Last login: Tue Sep 30 21:04:11 on ttys003
you@your-mac ~ % pwd
/Users/you
you@your-mac ~ % ls
Desktop    Documents  Downloads  notes.txt
you@your-mac ~ % cd notes
you@your-mac ~/notes % ls
draft.md   ideas.md   todo.txt
you@your-mac ~/notes % cd ..
you@your-mac ~ %

逐行講:

Last login: ... —— 視窗打開時的問候語,告訴你上次登入是什麼時候。跟你要做的事完全無關,直接跳過。 很多人卡在這一行的 ttys003 上,那只是這個終端機連線的編號。

you@your-mac ~ % —— 這就是提示字元(prompt)。它由三個資訊組成:

部分意思
you你的使用者帳號名稱
your-mac這台電腦的名稱
~你目前所在的目錄(~ 是家目錄的縮寫)
%結束符號:換你說了

zsh 的結束符號通常是 %,bash 通常是一般使用者顯示 $、管理員顯示 #,PowerShell 則是 PS 開頭加上目前路徑。這是分辨自己在哪種 shell 最快的方法。

pwd —— 你輸入的指令。畫面上它跟提示字元在同一行,所以看起來像是「you@your-mac ~ % pwd」一整串。前面那一段不是你打的,是它印的。 這個混淆非常常見。

/Users/you —— pwd 的輸出。它是「目前所在目錄」的完整地址。

第二個提示字元 you@your-mac ~ % —— 代表上一條指令已經結束,shell 準備好接下一條了。這是判斷「它跑完了沒有」的依據:看到新的提示字元出現,就是跑完了。沒有新提示字元、游標停在那裡閃,代表它還在跑(或卡住了)。

cd notes 之後,提示字元變成 you@your-mac ~/notes % —— 這是整段最重要的一個觀察:提示字元裡的第三段變了。 它在即時告訴你現在站在哪裡。你不需要記得自己做過什麼,看它就好。

cd .. 之後又變回 ~ —— .. 是「上一層」的意思。

那個看不見、卻一直在生效的東西

上面的 ~ 或 ~/notes,正式名稱是目前所在目錄(current directory),也叫工作目錄。

它是新手最常付出代價的一個概念,因為它在畫面上只佔提示字元裡的一小段,很容易被忽略,但它決定了幾乎所有指令的行為。

具體來說:

  • ls 列的是這裡的檔案,不是你整個電腦的檔案
  • cat notes.txt 找的是這裡的 notes.txt
  • 你叫 AI 工具「讀一下 report.pdf」,它找的是它被啟動時所在的那個目錄裡的 report.pdf
  • 你建立的檔案會落在這裡

於是就有了那個經典事故:你在 A 資料夾建了一個檔案,然後 cd 到 B 資料夾,接著 ls 沒看到它,結論是「檔案不見了」。檔案好好的在 A。

所以有一個習慣值得從第一天就養成:每次要跑一個會動到檔案的指令之前,先看一眼提示字元,或跑一次 pwd。 一半的「指令跑完東西不見了」都是在錯誤的資料夾裡跑的。

關於「家目錄」~、絕對路徑與相對路徑、以及為什麼 Windows 用反斜線而 macOS 用斜線,有一整篇在講:檔案路徑。

五個指令,各自回答一個你一定會問的問題

十行清單在那篇保命指令的文章裡。這裡只挑五個,而且只講一件事:每個回答的是哪個問題,以及它印出來的東西該怎麼讀。

一、pwd —— 「我現在在哪?」

pwd

印出一行完整路徑,例如 /Users/you/projects。就這樣,不會有別的東西。

什麼時候用:任何會動到檔案的動作之前。以及任何「檔案找不到」的錯誤之後的第一個動作。

二、ls —— 「這裡有什麼?」

ls
ls -l
ls -la

裸 ls 只印名字。加 -l 變成一行一個檔案,並在名字左邊多出一串資訊;加 -a 才會列出以 . 開頭的隱藏檔(.env、.gitignore 這類,而 AI 工具的設定常常就是這種檔案)。

ls -l 的每一行怎麼讀(示意範例):

-rw-r--r--  1 you  staff  2048 Sep 30 21:04 notes.txt
部分意思
開頭第一個字元- 是檔案,d 是資料夾
接著九個字元權限位:誰可以讀、寫、執行。見 File Permission(檔案權限)
you staff擁有者與群組
2048檔案大小(位元組)
Sep 30 21:04最後修改時間
notes.txt名字

看到 Permission denied 的時候,你要看的就是那九個字元和擁有者 —— 不是去加 sudo。

三、cd —— 「去別的地方」

cd notes        # 進到這裡底下的 notes 子資料夾
cd ~/projects   # 到家目錄底下的 projects
cd ..           # 回上一層
cd              # 不加任何參數=回家目錄
cd -            # 回到你上一次所在的目錄

cd 成功時什麼都不會印。 這是最多人以為「它沒反應」的地方 —— 它成功了,只是安靜。判斷方式:看提示字元裡的第三段有沒有變。

四、cat —— 「這個檔案裡寫什麼?」

cat notes.txt

把整個檔案內容印在畫面上。適合小檔案(設定檔、幾十行的筆記)。

檔案很長時會刷滿整個視窗、看不完。這種情況用 head -20 檔名(只看前 20 行)或 tail -20 檔名(只看後 20 行,看記錄檔最常用)。

五、--help —— 「這個指令自己會說什麼?」

某指令 --help
man ls

--help 是絕大多數命令列程式都支援的旗標,它印出這個程式自己的用法說明。man 是 macOS/Linux 的完整手冊(按 q 離開)。

這是最該養成習慣的一個。 它比搜尋引擎準,而且它講的一定是你手上這個版本的行為 —— 網路上搜到的說明可能對應另一個版本,而版本差異是指令跑不動的第二大原因。

三個對這個視窗的誤解

一、「我怕打錯把它弄壞。」

你打的字如果沒有對應到任何程式,shell 只會回一句「找不到這個指令」,然後什麼都不做。它不會壞、不會中毒、不需要重開機。

真正會出事的是會動檔案的指令 —— rm(刪除)、mv(移動/改名)、> (把輸出寫進檔案,會蓋掉原內容)。這些需要你主動打出來,而且多數會先問你。所以規則很簡單:看到 rm、sudo、chmod 777、> 這幾個關鍵字就停下來,先搞懂再按 Enter。 這件事在 那篇保命指令 裡有更完整的說明。

二、「它沒有輸出,代表失敗了。」

反過來。命令列工具的傳統是成功的時候安靜,失敗的時候才出聲。cd 成功不印東西、mv 成功不印東西、cp 成功不印東西。

想確認到底成功沒有,看結束代碼:跑完之後立刻 echo $?(PowerShell 是 $LASTEXITCODE),0 是成功。見 Exit Code(結束代碼),以及 怎麼讀一則錯誤訊息。

三、「我把視窗關掉,裡面在跑的東西就停了。」

不一定。背景處理程序與自己脫離視窗的服務會繼續跑 —— 繼續佔記憶體、佔網路連線,如果它在呼叫付費 API,繼續燒你的錢。見 Process(處理程序)。

要停一個正在跑的東西,用 Ctrl + C(這是中斷前景程序,不是關視窗)。

三十秒確認它在動

打開終端機,依序輸入這四條,每條按一次 Enter:

pwd
ls
cd
pwd

你應該看到的:

  1. 第一條印出一個路徑(多半是 /Users/你的帳號 或 C:\Users\你的帳號)
  2. 第二條印出一串檔案與資料夾名字
  3. 第三條什麼都不印
  4. 第四條印出一個路徑

如果第一次和第四次印出的路徑一樣,代表你原本就在家目錄;如果不一樣,代表你原本在別的地方,而第三條把你帶回家了。

跑完這四條,你已經確認了三件事:視窗開了、shell 在回應你、你知道自己在哪。這三件事是之後每一個安裝教學的起點。

下一步