萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 目錄與檔案管理核心命令:mkdir、rmdir、cd、pwd、ls 參數全解析

目錄操作四大金剛

mkdir — 建立目錄

mkdir dir1                    # 單層
mkdir -p a/b/c/d              # 遞歸建立父目錄 (最常用)
mkdir -m 750 private_dir      # 指定權限 (rwxr-x---)
mkdir -v project/{src,bin,doc,test}  # 大括號展開批量建立
mkdir --parent /home/user/.config/app  # 同 -p

常見錯誤:目錄已存在報錯 → 加 -p 抑制錯誤;權限不足 → 檢查父目錄寫入權限或 sudo。

rmdir — 刪除空目錄

rmdir empty_dir               # 僅限空目錄
rmdir -p a/b/c                # 遞歸刪除空父目錄 (c 空→刪除→b 空→刪除→a 空→刪除)
rmdir --ignore-fail-on-non-empty dir  # 忽略非空錯誤 (配合 -p)

非空目錄刪除請用 rm -r 或 rm -rf (極度謹慎)。

cd — 切換工作目錄

cd                            # 回家目錄 ($HOME)
cd /absolute/path             # 絕對路徑
cd relative/path              # 相對路徑
cd ..                         # 父目錄
cd ../..                      # 祖父目錄
cd -                          # 切回上一個工作目錄 (OLDPWD)
cd ~user                      # 切換到指定用戶家目錄
cd "$(dirname "$0")"          # 腳本所在目錄 (需 source 或 . 執行)

CDPATH 變數:export CDPATH=.:~:/projects:/var/www 讓 cd dirname 在多路徑搜尋,類似 PATH。

pwd — 印出工作目錄

pwd               # 邏輯路徑 (跟隨符號連結)
pwd -P            # 物理路徑 (解析符號連結)
pwd -L            # 強制邏輯路徑 (預設)

差異示例:/home/user/link_dir -> /mnt/data/real_dir,在 link_dir 內 pwd 顯示 /home/user/link_dir,pwd -P 顯示 /mnt/data/real_dir。

ls — 列出目錄內容 (參數最多、最常用)

核心參數分類速查

類別參數功能組合範例
顯示範圍-a, --all顯示所有 (含 . 和 ..)ls -la
-A, --almost-all顯示隱藏檔但不顯示 . 和 ..ls -lA
-d, --directory目錄本身而非內容ls -ld /etc
-R, --recursive遞歸顯示子目錄ls -R /etc | head -30
輸出格式-l長格式 (權限、連結數、擁有者、群組、大小、時間、名稱)ls -lh
-h, --human-readable人類可讀大小 (K, M, G)ls -lh
-1單欄輸出 (管道處理友好)ls -1 | wc -l
-C多欄輸出 (終端預設)ls -C
-m逗號分隔流式輸出ls -m
--color[=WHEN]彩色 (auto/always/never)ls --color=always | less -R
排序-t按修改時間新→舊ls -lt
-r, --reverse反向排序ls -ltr (舊→新,最新在底部)
-S按大小大→小ls -lSh
-X按副檔名字母序ls -lX
-U不排序 (目錄順序)ls -U
時間戳選擇-c按狀態變更時間 (ctime) 排序/顯示ls -lc
-u按最後存取時間 (atime) 排序/顯示ls -lu
--time=WORDatime/ctime/mtime/birth/accessls -l --time=birth
--time-style=STYLElong-iso, full-iso, locale, +FORMATls -l --time-style=long-iso
--sort=WORDnone (-U), size (-S), time (-t), version (-v), extension (-X)ls --sort=version
文件標識-F, --classify目錄 /、執行 *、連結 @、管道 |、socket =ls -F
-p目錄後加 / (不標記其他)ls -p
-i, --inode顯示 inode 號ls -li
-n, --numeric-uid-gid數字 UID/GID 而非名稱ls -ln
過濾-B, --ignore-backups忽略 ~ 結尾備份檔ls -B
-I, --ignore=PATTERN忽略符合模式 (不進入目錄)ls -I '*.tmp'
--hide=PATTERN隱藏符合模式 (但仍進入目錄)ls --hide='*.log'

長格式權限字串完整解讀

drwxr-xr-x  2 user  group  4096 Jan 15 10:30  Documents
││││││││││  │    │     │       │          │
││││││││││  │    │     │       │          └─ 名稱
││││││││││  │    │     │       └─ 修改時間 (mtime)
││││││││││  │    │     └─ 大小 (位元組,目錄為塊數)
││││││││││  │    └─ 群組名
││││││││││  └─ 擁有者名
│││││││││└─ 硬連結數 (目錄含 . 和 .. 至少 2)
││││││││└─ 其他權限 (rwx)
│││││││└─ 群組權限 (r-x)
││││││└─ 擁有者權限 (rwx)
│││││└─ 類型: d=目錄 -=文件 l=符號連結 b=塊設備 c=字符設備 p=管道 s=socket
││││└─ 替代執行位 (S/s) — setuid/setgid 無執行權
│││└─ 粘滯位 (T/t) — 目錄刪除保護
││└─ SetGID (g/s) — 目錄繼承群組、文件以群組權限執行
│└─ SetUID (u/s) — 文件以擁有者權限執行
└─ (保留)

實戰組合拳

# 找出最大的 10 個文件
find /var/log -type f -exec ls -lh {} + | sort -k5 -hr | head -10
# 或
du -ah /var/log | sort -hr | head -10

# 列出所有可執行文件
find /usr/local/bin -type f -executable -ls

# 顯示目錄樹 (僅目錄)
ls -d */ | column
# 或
tree -d -L 2

# 統計文件類型數量
find /etc -type f | xargs file | cut -d: -f2 | sort | uniq -c | sort -nr

# 顯示完整時間戳 (含秒、奈秒)
ls -l --time-style=full-iso
# 2024-01-15 10:30:45.123456789 +0800

權限修改三劍客 (補充)

chmod 755 file          # 數字法: rwxr-xr-x
chmod u+x,g-w,o=r file  # 符號法: 精確控制
chmod -R u+rwX,go=rX dir # 遞歸: X=目錄或已有執行位才加 x
chown user:group file   # 修改擁有者:群組
chown -R user:group dir # 遞歸
chgrp group file        # 僅修改群組

熟練這些命令與參數組合,是 Linux 日常操作、腳本編寫、故障排查的基本功。建議建立個人 cheatsheet 或使用 tldr/cheat 工具快速查閱。

copyright © 萬盛學電腦網 all rights reserved