No such file or directory。
你看了一眼檔案,它就在那裡,在螢幕上看得見。於是你以為是程式壞了、或者自己裝錯了東西。
九成情況下,問題是你給的路徑與程式尋找的位置不是同一個地方。 路徑是初學者最早撞到、也最少被解釋清楚的概念之一。
一、每一個路徑都是從某個地方開始算的
檔案系統是一棵樹。最頂端叫根目錄:
- macOS 與 Linux 寫作
/ - Windows 寫作
C:\(或D:\等,取決於磁碟)
從根目錄一路寫下來的完整位置,叫絕對路徑:
/Users/you/projects/notes/todo.txt (macOS / Linux)
C:\Users\you\projects\notes\todo.txt (Windows)
絕對路徑的好處是不管你在哪裡,它都指向同一個檔案。
二、相對路徑:從「你現在在哪」開始算
相對路徑不從根目錄開始,而是從你目前所在的資料夾開始。這個資料夾叫工作目錄。
pwd # 印出你現在在哪(print working directory)
假設 pwd 告訴你你在 /Users/you/projects,那麼:
| 你寫的 | 實際指向 |
|---|---|
notes/todo.txt | /Users/you/projects/notes/todo.txt |
./notes/todo.txt | 同上,./ 就是「這裡」 |
../other/x.txt | /Users/you/other/x.txt,../ 是「上一層」 |
~/notes/todo.txt | /Users/you/notes/todo.txt,~ 是你的家目錄 |
這就是「找不到檔案」最常見的原因:你給的是相對路徑,但你不在你以為的那個目錄裡。
確認方法:先 pwd,再想你要的檔案相對於這個位置在哪。
~ 是家目錄的簡寫(/Users/you 或 /home/you)。它很有用,但注意 Windows 的命令提示字元不認 ~,PowerShell 則認。
三、/ 與 \:兩種作業系統的分隔符不同
- macOS / Linux 用斜線
/ - Windows 用反斜線
\
把 Windows 路徑貼進 macOS 終端機、或反過來,都會失敗。
一個實用的好處:很多現代的工具與程式語言兩種都接受,或者你在 Windows 上用 PowerShell 時 / 也常常能用。所以如果不確定,先試 /。
Windows 還有一個歷史遺留問題:某些老程式用 / 表示選項(例如 dir /w),所以在那些場合反斜線是必須的。
四、名稱裡有空格,就需要引號
cat My Project/notes.txt # 錯:會被當成三個參數
cat "My Project/notes.txt" # 對
不加引號時,終端機把空格當成「這裡是下一個參數」的分隔符,所以它以為你要它對 My、Project/notes.txt 做某件事。
引號用單引號或雙引號都可以,差别在於雙引號裡面 $ 開頭的東西會被展開成變數,單引號則原樣保留。路徑通常用雙引號就夠。
另一個選擇是跳脫:cat My\ Project/notes.txt。反斜線的意思是「下一個字元按字面處理」。但引號比較好讀,也比較不容易漏。
最省事的做法:給檔案與資料夾命名時不要用空格。用 - 或 _ 代替。這不是美學偏好,是可以少踩一類坑。
五、怎麼找出一個檔案到底在哪
不要猜。有三種方法:
方法一:從圖形介面拿。 在 macOS 的 Finder 裡對檔案按右鍵、按住 Option,會出現「將 XXX 拷貝為路徑名稱」。Windows 的檔案總管裡,按住 Shift 對檔案按右鍵會出現「複製檔案位址」。
方法二:用指令搜。
find ~ -name "todo.txt" 2>/dev/null # macOS / Linux,從家目錄開始找
2>/dev/null 是把「權限不足」那類噪音丟掉,否則會印出幾百行你不想看的錯誤。
Windows PowerShell:
Get-ChildItem -Path $HOME -Recurse -Filter "todo.txt" -ErrorAction SilentlyContinue
方法三:拖進去。 大多數終端機支援把檔案從 Finder/檔案總管直接拖進終端機視窗,它會自動填入正確的完整路徑(含必要的引號或跳脫)。這是最不容易錯的方法。
六、隱藏檔案:以 . 開頭
在 macOS 與 Linux 上,名稱以 . 開頭的檔案是隱藏的:.zshrc、.bashrc、.gitignore、.env。
ls 預設不顯示它們。要看:
ls -a
這對 AI 工具很重要,因為很多工具的設定檔就是這種隱藏檔案(例如 ~/.someconfig/config.yaml)。你用 Finder 看不到它,不代表它不存在。
Finder 裡按 Cmd+Shift+. 可以切換顯示隱藏檔案。Windows 上對應的是檔案總管的「顯示」→「隱藏的項目」。
七、五個最常見的路徑錯誤
| 症狀 | 原因 | 確認方法 |
|---|---|---|
No such file or directory 但檔案看得見 | 你不在你以為的目錄 | pwd |
| 同上,且路徑含空格 | 沒加引號 | 加 "..." |
| 同上,在 Windows | 用了 / 或 ~ | 改 \,~ 換成完整路徑 |
Permission denied | 路徑對了但沒權限 | 見 裝完沒反應:五個檢查,照順序做完再重裝 檢查二 |
| 設定檔找不到 | 它是隱藏檔案 | ls -a |
為什麼這件事對 AI 工具特別重要
因為你與 Agent 之間最常見的溝通失敗就是路徑。
你說「幫我看一下那個報告」,它不知道「那個」是哪一個。它只能看到工作目錄裡的東西,而你心裡想的那個檔案可能在桌面、在下載、在另一個專案裡。
給 Agent 完整路徑,而不是描述。 這兩句話的差别很大:
弱:幫我總結 report.pdf
強:幫我總結 /Users/you/Documents/2026/report.pdf
第二句它會直接去做。第一句它要麼猜、要麼列目錄找、要麼問你 —— 三種都浪費時間,而猜錯的時候你會以為它能力不行。
如果你不確定路徑,就用上面第五節的方法三:把檔案拖進終端機視窗,路徑會自己填進去。
下一步
- 終端機與 CLI 保命指南 ——
pwd、ls、cd這些指令的完整說明 - 把指令從網頁貼進終端機 —— 路徑貼進去卻報錯時,先看這裡
- 裝完沒反應 ——
Permission denied與工作目錄的問題在那裡有排查順序 - AI Agent 到底看得到什麼 —— 工作目錄決定了它的視野範圍
- PATH 與路徑 / Working Directory(工作目錄) / CLI(命令列介面)