Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux mkdir 指令完全指令:建立目錄、權限設定與遞迴建立實戰技巧

編輯:關於 Linux

mkdir(make directories)是 Linux 建立目錄的核心指令。除了基本建立單層目錄,其 -p 遞迴建立、-m 直接指定權限、-v 顯示過程等參數,能大幅簡化腳本撰寫與部署流程。本文完整整理語法、參數、實戰範例與最佳實務。

指令語法與核心功能

mkdir [選項]... 目錄...

前置條件:

  • 對父目錄具備寫入(w)與執行(x)權限
  • 目錄名稱在同層級下不可重複(區分大小寫)
  • 路徑可為絕對路徑或相對路徑

常用參數詳細說明

參數長參數功能範例
-p--parents遞迴建立父目錄鏈,不存在則自動建立mkdir -p a/b/c
-m--mode=模式直接設定目錄權限(如 chmod 格式),覆蓋 umaskmkdir -m 750 private
-v--verbose顯示每個建立的目錄名稱mkdir -pv a/b/c
-Z--context設定 SELinux 安全內容(預設類型)mkdir -Z webroot
--help顯示幫助資訊
--version顯示版本資訊
權限計算: 最終權限 = mode & ~umask。若指定 -m 則忽略 umask 直接套用模式。

實戰範例演示

範例一:建立單一空目錄

mkdir test1
ls -ld test1
# drwxr-xr-x 2 user group 4096 Oct 25 17:42 test1

範例二:遞迴建立多層目錄結構

mkdir -p test2/test22
tree test2
# test2
# └── test22

# 加上 -v 顯示過程
mkdir -pv project/{src,bin,doc,test/{unit,integration}}
# mkdir: 建立了目錄 'project'
# mkdir: 建立了目錄 'project/src'
# mkdir: 建立了目錄 'project/bin'
# ...

範例三:建立時直接指定權限

# 建立僅擁有者可存取的私密目錄
mkdir -m 700 ~/.ssh_backup

# 建立群組協作目錄(設定 setgid 確保新檔繼承群組)
mkdir -m 2770 /shared/teamdata
chgrp developers /shared/teamdata

範例四:搭配大括號擴展批次建立

# 建立年份月份目錄結構
mkdir -p /var/log/app/{2023,2024}/{01..12}

# 建立多專案標準結構
mkdir -p /opt/{web,api,worker}/{config,logs,data,tmp}

進階應用場景

腳本中安全建立目錄(冪等性)

#!/bin/bash
LOG_DIR="/var/log/myapp"
CONFIG_DIR="/etc/myapp"

# -p 確保父目錄存在,不報錯;搭配 || true 忽略已存在錯誤
mkdir -p "$LOG_DIR" "$CONFIG_DIR" || {
    echo "無法建立目錄,檢查權限" >&2
    exit 1
}

# 設定正確權限與擁有者
chown appuser:applog "$LOG_DIR"
chmod 750 "$LOG_DIR"
chmod 755 "$CONFIG_DIR"

搭配 mktemp 建立臨時目錄

# 安全建立唯一臨時目錄
TMP_DIR=$(mktemp -d /tmp/myapp.XXXXXX)
mkdir -p "$TMP_DIR/{input,output,work}"
# 使用結束後清理
trap 'rm -rf "$TMP_DIR"' EXIT

常見問題與排查

錯誤原因解決
Permission denied父目錄無寫入權限sudo mkdir 或 chmod u+w 父目錄
File exists同名檔案/目錄已存在改名、刪除舊項目、或使用 mkdir -p 忽略
No space left on device磁碟空間不足或 inode 耗盡df -h/df -i 檢查,清理空間
Invalid argument目錄名含非法字元(/、NUL)檢查變數內容,避免不當字元

最佳實務總結

  • 習慣加 -p: 避免「父目錄不存在」錯誤,支援冪等操作
  • 明確指定 -m: 關鍵目錄(SSH、SSL、資料庫)直接設定安全權限
  • 善用大括號擴展: 批次建立標準化目錄結構,減少重複代碼
  • 搭配 -v 除錯: 腳本開發階段觀察建立順序與結果
  • SELinux 環境加 -Z: 確保安全內容正確,避免後續存取被拒

熟練掌握 mkdir 的參數組合與 Shell 擴展特性,能讓環境部署、專案初始化、日誌輪轉等自動化流程更加健壯且可維護。

Copyright © Windows教程網 All Rights Reserved