掌握 Linux 檔案/目錄管理指令與 Bash Shell 核心特性,是高效操作系統的基礎。本文系統整理 mkdir、rmdir、cp、mv、rm 等檔案操作指令細節,並深入解析命令執行狀態、路徑展開、檔案中繼資料、別名與命令置換等 Bash 核心機制。
mkdir [選項] 目錄...
| 選項 | 功能 |
|---|---|
-p | 自動建立父目錄 (遞迴建立) |
-v | 顯示詳細建立過程 |
-m MODE | 直接指定權限 (如 -m 755) |
注意:路徑的基名 (最後一層) 為建立目標,基名之前的路徑必須已存在 (除非用 -p)。
rmdir [選項] 目錄...
| 選項 | 功能 |
|---|---|
-p | 刪除子目錄後,若父目錄也為空則一併刪除 |
-v | 顯示刪除過程 |
# 單源複製
cp [選項] [-T] 來源 目標
# 多源複製
cp [選項] 來源... 目標目錄
cp [選項] -t 目標目錄 來源...
| 場景 | 行為 |
|---|---|
| 目標不存在 (單源) | 建立目標檔案並複製資料流 |
| 目標存在且為檔案 | 覆蓋目標檔案 |
| 目標存在且為目錄 | 在目標目錄下建立同名檔案並複製 |
| 多源複製目標非目錄 | 報錯 |
常用選項:-i 互動確認、-f 強制覆蓋、-r/-R 遞迴複製目錄、-d 複製符號連結本身、-a 歸檔模式 (等同 -dR --preserve=all)。
語法與 cp 類似。常用 -i 互動、-f 強制。
常用選項:-i 互動確認、-f 強制刪除、-r 遞迴刪除目錄。
01-255echo $?| 語法 | 展開結果 | 範例 |
|---|---|---|
~ | 目前使用者家目錄 | cd ~ |
~user | 指定使用者家目錄 | ls ~root |
{a,b,c} | 展開為多個路徑/字串 | touch {a,b}_{c,d} → a_c a_d b_c b_d |
| 選項 | 功能 |
|---|---|
-a | 僅修改存取時間 (atime) |
-m | 僅修改修改時間 (mtime) |
-c | 檔案不存在時不建立 |
-t [[CC]YY]MMDDhhmm[.ss] | 指定具體時間 |
alias 別名='指令串' (寫入 ~/.bashrc 永久生效)$(指令) 或 `指令` (推薦前者,支援巢狀)/var 下以 l 開頭、以小寫字母結尾、中間含至少一數字的檔案/目錄:ls -ld /var/l*[0-9]*[a-z]/etc 下以數字開頭、非數字結尾的項目:ls -ld /etc/[0-9]*[^[:digit:]]/etc 下以非字母開頭、第二字元為字母的項目:ls -ld /etc/[^[:alpha:]][a-z]*/tmp 建立含當前日期時間的檔案:touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)/etc 下以 p 開頭、非數字結尾的項目到 /tmp/mytest1:cp -r /etc/p*[^0-9] /tmp/mytest1//etc 下所有以 .d 結尾的項目到 /tmp/mytest2:cp -r /etc/*.d /tmp/mytest2//etc 下以 l/m/n 開頭、以 .conf 結尾的檔案到 /tmp/mytest3:cp -r /etc/[lmn]*.conf /tmp/mytest3/