cd(change directory)是 Linux 使用頻率最高、也是最基礎的指令。掌握相對/絕對路徑、特殊符號(.、..、~、-)、環境變數搭配、以及 Tab 補全技巧,能大幅提升終端機操作效率。本文系統整理語法、核心範例與進階應用場景。

cd [目錄名]
無參數時: 切換至目前使用者家目錄($HOME,等同 cd ~)。
| 符號/指令 | 含義 | 範例 |
|---|---|---|
| / | 系統根目錄 | cd / |
| . | 目前目錄 | cd .(原地不动) |
| .. | 父目錄 | cd ..、cd ../..(上兩層) |
| ~ | 目前使用者家目錄($HOME) | cd ~、cd ~/Documents |
| ~user | 指定使用者家目錄 | cd ~root → /root |
| - | 上一次工作目錄($OLDPWD) | cd - 在兩目錄間快速切換 |
cd /
pwd
# /
ls
# 顯示根目錄內容:bin, boot, dev, etc, home, ...
pwd
# /opt/soft
cd ..
pwd
# /opt
cd ../..
pwd
# /
# 等同於
cd ../../..
# 目前在 /opt/soft
cd
pwd
# /home/user (或 /root 若為 root)
# 明確指定
cd ~
cd $HOME
# 切換至其他用戶家目錄(需權限)
cd ~postgres
# /var/lib/postgresql
cd - 快速來回切換pwd
# /home/user
cd /var/log
pwd
# /var/log
cd -
pwd
# /home/user (自動輸出切換後路徑)
cd -
pwd
# /var/log
# 設定常用專案父目錄
export CDPATH=".:~:/opt/projects:/var/www"
# 現在可直接切換子目錄無需完整路徑
cd myproject # 依序搜尋 ./myproject, ~/myproject, /opt/projects/myproject, /var/www/myproject
注意:CDPATH會影響腳本行為,建議腳本中使用絕對路徑或cd /full/path避免副作用。
pushd /etc/nginx
# /etc/nginx /home/user
pushd /var/log
# /var/log /etc/nginx /home/user
dirs -v
# 0 /var/log
# 1 /etc/nginx
# 2 /home/user
popd
# /etc/nginx /home/user
popd
# /home/user
cd /et[TAB] → /etc/(自動加斜線)cd $HO[TAB] → $HOMEcd ~ro[TAB] → ~root/| 錯誤 | 原因 | 解決 |
|---|---|---|
| No such file or directory | 路徑錯誤、目錄不存在、拼寫錯誤 | 用 ls 確認、Tab 補全避免拼寫錯誤 |
| Not a directory | 目標為檔案而非目錄 | 確認路徑、使用 dirname 取得父目錄 |
| Permission denied | 無目錄執行權限(x) | chmod +x 目錄 或以適當身分執行 |
| cd: too many arguments | 路徑含空格未加引號 | cd "My Documents" 或 cd My\ Documents |
cd -: 兩個工作目錄間高頻切換的神器pushd/popd: 多層目錄巡檢、部署流程中保持路徑堆疊CDPATH: 固定專案目錄結構時大幅減少輸入CDPATH、相對路徑、當前目錄變更帶來的不確定性cd 雖簡單,但其特殊符號、環境變數互動、堆疊操作與補全機制構成了高效終端機操作的基石。熟練掌握這些技巧,能讓日常系統管理、開發除錯、部署發佈的導航效率成倍提升。