1. 首页 > Linux教程 > 正文

Linux教程FG050-mkdir命令(单/多级目录/权限指定)实操

本文档风哥主要介绍Linux mkdir命令的使用方法,包括创建单级目录、多级目录、权限指定等内容,参考Red Hat Enterprise Linux 10官方文档,适合运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn

参考Red Hat Enterprise Linux 10官方文档中的System administration章节 更多学习教程公众号风哥教程itpux_com

Part01-基础概念与理论知识

1.1 mkdir命令基本概念

mkdir(make directory)命令用于创建新目录,是Linux系统中最基本的文件管理命令之一。 学习交流加群风哥微信: itpux-com

mkdir命令核心功能:

  • 创建目录:创建一个或多个新目录
  • 多级目录:使用-p选项创建嵌套目录
  • 权限设置:使用-m选项指定目录权限
  • 批量创建:一次创建多个目录

1.2 目录结构基础

# Linux目录结构基础

1. 目录层次结构
/ # 根目录
├── bin/ # 基本命令
├── boot/ # 启动文件
├── dev/ # 设备文件
├── etc/ # 配置文件
├── home/ # 用户家目录
├── lib/ # 共享库
├── media/ # 可移动介质
├── mnt/ # 临时挂载点
├── opt/ # 可选软件包
├── proc/ # 进程信息
├── root/ # root用户家目录
├── run/ # 运行时数据
├── sbin/ # 系统命令
├── srv/ # 服务数据
├── sys/ # 系统文件
├── tmp/ # 临时文件
├── usr/ # 用户程序
└── var/ # 可变数据

2. 目录命名规则
– 区分大小写
– 不能包含/字符
– 避免使用特殊字符
– 建议使用小写字母和数字

3. 路径表示
绝对路径:从根目录开始的完整路径
相对路径:相对于当前目录的路径

1.3 mkdir命令选项

mkdir命令支持的选项:

  • -p:创建多级目录,如果父目录不存在则创建
  • -m:设置目录权限(类似chmod)
  • -v:显示创建过程
  • -Z:设置SELinux安全上下文
  • –help:显示帮助信息
  • –version:显示版本信息
风哥提示:mkdir命令虽然简单,但合理使用选项可以大幅提高效率。特别是-p选项在脚本中创建目录结构时非常有用。

Part02-生产环境规划与建议

2.1 目录规划原则

# 目录规划原则

1. 遵循FHS标准
/opt/applications # 第三方应用
/var/log/app # 应用日志
/var/lib/app # 应用数据
/etc/app # 应用配置

2. 命名规范
– 使用小写字母
– 使用下划线或连字符分隔
– 名称具有描述性
– 避免空格和特殊字符

3. 目录结构示例
/opt/webapp/
├── bin/ # 可执行文件
├── conf/ # 配置文件
├── data/ # 数据文件
├── logs/ # 日志文件
├── temp/ # 临时文件
└── backup/ # 备份文件

4. 权限规划
– 配置目录:755或750
– 数据目录:750或700
– 日志目录:755或750
– 临时目录:1777

2.2 权限设置策略

目录权限设置策略: from LinuxDBA视频:www.itpux.com

  • 系统目录:755(rwxr-xr-x)
  • 用户目录:750(rwxr-x—)或700(rwx——)
  • 共享目录:775(rwxrwxr-x)
  • 临时目录:1777(rwxrwxrwt)
  • 机密目录:700(rwx——)

2.3 最佳实践建议

使用mkdir命令的最佳实践: 学习交流加群风哥QQ113257174

  • 使用-p选项:避免父目录不存在的错误
  • 设置权限:创建时直接设置权限,避免后续修改
  • 验证创建:创建后验证目录是否存在
  • 错误处理:在脚本中处理创建失败的情况
  • 日志记录:记录目录创建操作

Part03-生产环境项目实施方案

3.1 mkdir基础用法

# mkdir基础用法示例

# 1. 创建单个目录
# mkdir testdir
# ls -ld testdir
drwxr-xr-x. 2 root root 6 Apr 2 16:00 testdir

# 2. 创建多个目录
# mkdir dir1 dir2 dir3
# ls -ld dir*
drwxr-xr-x. 2 root root 6 Apr 2 16:00 dir1
drwxr-xr-x. 2 root root 6 Apr 2 16:00 dir2
drwxr-xr-x. 2 root root 6 Apr 2 16:00 dir3

# 3. 创建多级目录
# mkdir -p /tmp/a/b/c/d/e
# ls -R /tmp/a
/tmp/a:
b

/tmp/a/b:
c

/tmp/a/b/c:
d

/tmp/a/b/c/d:
e

/tmp/a/b/c/d/e:

# 4. 创建目录并设置权限
# mkdir -m 777 public_dir
# ls -ld public_dir
drwxrwxrwx. 2 root root 6 Apr 2 16:00 public_dir

# mkdir -m 700 private_dir
# ls -ld private_dir
drwx——. 2 root root 6 Apr 2 16:00 private_dir

# mkdir -m 750 group_dir
# ls -ld group_dir
drwxr-x—. 2 root root 6 Apr 2 16:00 group_dir

# 5. 显示创建过程
# mkdir -v testdir1 testdir2
mkdir: created directory ‘testdir1’
mkdir: created directory ‘testdir2’

# mkdir -pv /tmp/test/a/b/c
mkdir: created directory ‘/tmp/test’
mkdir: created directory ‘/tmp/test/a’
mkdir: created directory ‘/tmp/test/a/b’
mkdir: created directory ‘/tmp/test/a/b/c’

# 6. 使用大括号扩展创建多个目录
# mkdir {dir1,dir2,dir3}
# ls -ld dir*
drwxr-xr-x. 2 root root 6 Apr 2 16:00 dir1
drwxr-xr-x. 2 root root 6 Apr 2 16:00 dir2
drwxr-xr-x. 2 root root 6 Apr 2 16:00 dir3

# mkdir test_{01..05}
# ls -ld test_*
drwxr-xr-x. 2 root root 6 Apr 2 16:00 test_01
drwxr-xr-x. 2 root root 6 Apr 2 16:00 test_02
drwxr-xr-x. 2 root root 6 Apr 2 16:00 test_03
drwxr-xr-x. 2 root root 6 Apr 2 16:00 test_04
drwxr-xr-x. 2 root root 6 Apr 2 16:00 test_05

# mkdir {a,b,c}/{1,2,3}
# ls -R {a,b,c}
a:
1 2 3

a/1:
a/2:
a/3:

b:
1 2 3

b/1:
b/2:
b/3:

c:
1 2 3

c/1:
c/2:
c/3:

3.2 mkdir高级用法

# mkdir高级用法

# 1. 创建目录并设置SELinux上下文
# mkdir -Z unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/newdir
# ls -ldZ /var/www/html/newdir
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 2 16:00 /var/www/html/newdir

# 2. 创建目录并设置所有者和组
# mkdir /data/project
# chown apache:apache /data/project
# ls -ld /data/project
drwxr-xr-x. 2 apache apache 6 Apr 2 16:00 /data/project

# 或使用install命令一次性完成
# install -d -o apache -g apache -m 750 /data/project2
# ls -ld /data/project2
drwxr-x—. 2 apache apache 6 Apr 2 16:00 /data/project2

# 3. 创建临时目录
# mkdir -m 1777 /tmp/mytemp
# ls -ld /tmp/mytemp
drwxrwxrwt. 2 root root 6 Apr 2 16:00 /tmp/mytemp

# 4. 创建目录并验证
# mkdir /tmp/testdir && echo “目录创建成功” || echo “目录创建失败”
目录创建成功

# 5. 创建目录并立即进入
# mkdir /tmp/newdir && cd /tmp/newdir
# pwd
/tmp/newdir

# 6. 创建目录结构
# mkdir -p /opt/app/{bin,conf,data,logs,temp,backup}
# ls /opt/app/
backup bin conf data logs temp

# 7. 创建日期目录
# mkdir $(date +%Y%m%d)
# ls -ld 20260402
drwxr-xr-x. 2 root root 6 Apr 2 16:00 20260402

# mkdir backup_$(date +%Y%m%d_%H%M%S)
# ls -ld backup_*
drwxr-xr-x. 2 root root 6 Apr 2 16:00 backup_20260402_160000

# 8. 创建用户目录结构
# mkdir -p /home/user/{Documents,Downloads,Music,Pictures,Videos}
# ls /home/user/
Documents Downloads Music Pictures Videos

3.3 实用案例

# mkdir实用案例

# 案例1:创建项目目录结构
# cat > /fgedu/shell/create_project.sh << 'EOF' #!/bin/bash # from:www.itpux.com.qq113257174.wx:itpux-com PROJECT_NAME=$1 PROJECT_ROOT="/opt/projects" if [ -z "$PROJECT_NAME" ]; then echo "用法: $0 <项目名称>”
exit 1
fi

PROJECT_DIR=”$PROJECT_ROOT/$PROJECT_NAME”

echo “创建项目目录: $PROJECT_DIR”

mkdir -pv “$PROJECT_DIR”/{bin,conf,data,logs,temp,backup,src,docs}

# 设置权限
chmod 755 “$PROJECT_DIR”
chmod 750 “$PROJECT_DIR”/{conf,data,backup}
chmod 755 “$PROJECT_DIR”/{bin,logs,temp,src,docs}

# 创建README文件
cat > “$PROJECT_DIR/README.md” << README # $PROJECT_NAME 项目创建时间: $(date) ## 目录结构 - bin/ - 可执行文件 - conf/ - 配置文件 - data/ - 数据文件 - logs/ - 日志文件 - temp/ - 临时文件 - backup/ - 备份文件 - src/ - 源代码 - docs/ - 文档 README echo "项目目录创建完成!" tree "$PROJECT_DIR" 2>/dev/null || ls -R “$PROJECT_DIR”
EOF

# chmod +x /fgedu/shell/create_project.sh
# create_project.sh webapp
创建项目目录: /opt/projects/webapp
mkdir: created directory ‘/opt/projects/webapp’
mkdir: created directory ‘/opt/projects/webapp/bin’
mkdir: created directory ‘/opt/projects/webapp/conf’
mkdir: created directory ‘/opt/projects/webapp/data’
mkdir: created directory ‘/opt/projects/webapp/logs’
mkdir: created directory ‘/opt/projects/webapp/temp’
mkdir: created directory ‘/opt/projects/webapp/backup’
mkdir: created directory ‘/opt/projects/webapp/src’
mkdir: created directory ‘/opt/projects/webapp/docs’
项目目录创建完成!
/opt/projects/webapp:
backup bin conf data docs logs README.md src temp

/opt/projects/webapp/backup:

/opt/projects/webapp/bin:

/opt/projects/webapp/conf:

/opt/projects/webapp/data:

/opt/projects/webapp/docs:

/opt/projects/webapp/logs:

/opt/projects/webapp/src:

/opt/projects/webapp/temp:

# 案例2:创建备份目录结构
# cat > /fgedu/shell/create_backup_dirs.sh << 'EOF' #!/bin/bash BACKUP_ROOT="/backup" DATE=$(date +%Y%m%d) # 创建年月目录结构 mkdir -pv "$BACKUP_ROOT"/{$DATE,daily,weekly,monthly}/{full,incremental} # 创建应用备份目录 mkdir -pv "$BACKUP_ROOT"/{mysql,nginx,app} # 设置权限 chmod 750 "$BACKUP_ROOT" chmod 750 "$BACKUP_ROOT"/* echo "备份目录结构创建完成!" ls -R "$BACKUP_ROOT" EOF # chmod +x /fgedu/shell/create_backup_dirs.sh # create_backup_dirs.sh # 案例3:创建用户目录并设置权限 # cat > /fgedu/shell/create_user_dirs.sh << 'EOF' #!/bin/bash USERNAME=$1 if [ -z "$USERNAME" ]; then echo "用法: $0 <用户名>”
exit 1
fi

HOME_DIR=”/home/$USERNAME”

if [ ! -d “$HOME_DIR” ]; then
echo “用户家目录不存在: $HOME_DIR”
exit 1
fi

# 创建标准目录
mkdir -pv “$HOME_DIR”/{Documents,Downloads,Music,Pictures,Videos,Desktop,Templates,Public}

# 创建应用目录
mkdir -pv “$HOME_DIR”/.local/{bin,share,lib}
mkdir -pv “$HOME_DIR”/.config
mkdir -pv “$HOME_DIR”/.cache

# 设置权限
chown -R $USERNAME:$USERNAME “$HOME_DIR”
chmod 700 “$HOME_DIR”
chmod 755 “$HOME_DIR”/{Documents,Downloads,Music,Pictures,Videos,Desktop,Templates,Public}

echo “用户目录创建完成!”
EOF

# chmod +x /fgedu/shell/create_user_dirs.sh

Part04-生产案例与实战讲解

4.1 案例1:项目目录创建

# 项目目录创建实战

# 场景:为Web应用创建标准目录结构

# 1. 创建Web应用目录
# cat > /fgedu/shell/setup_webapp.sh << 'EOF' #!/bin/bash # from:www.itpux.com.qq113257174.wx:itpux-com APP_NAME=${1:-webapp} APP_ROOT="/opt/$APP_NAME" echo "=========================================" echo "创建Web应用目录结构" echo "应用名称: $APP_NAME" echo "应用根目录: $APP_ROOT" echo "=========================================" # 创建主目录 mkdir -pv "$APP_ROOT" # 创建子目录 mkdir -pv "$APP_ROOT"/{bin,conf,data,logs,temp,backup} mkdir -pv "$APP_ROOT"/conf/{nginx,php,mysql} mkdir -pv "$APP_ROOT"/data/{uploads,cache,sessions} mkdir -pv "$APP_ROOT"/logs/{nginx,php,app} mkdir -pv "$APP_ROOT"/backup/{daily,weekly,monthly} # 创建版本目录 mkdir -pv "$APP_ROOT"/releases/{current,previous} mkdir -pv "$APP_ROOT"/shared # 设置权限 chown -R nginx:nginx "$APP_ROOT" chmod 755 "$APP_ROOT" chmod 750 "$APP_ROOT"/{conf,data,backup} chmod 755 "$APP_ROOT"/{bin,logs,temp} chmod 770 "$APP_ROOT"/data/{uploads,cache,sessions} # 创建配置文件 cat > “$APP_ROOT/conf/app.conf” << CONF # $APP_NAME 配置文件 # 创建时间: $(date) [global] app_name = $APP_NAME app_root = $APP_ROOT log_level = INFO [paths] data_dir = $APP_ROOT/data log_dir = $APP_ROOT/logs temp_dir = $APP_ROOT/temp backup_dir = $APP_ROOT/backup CONF # 创建日志文件 touch "$APP_ROOT"/logs/nginx/{access.log,error.log} touch "$APP_ROOT"/logs/php/{php-fpm.log,php-error.log} touch "$APP_ROOT"/logs/app/app.log echo "" echo "=========================================" echo "目录结构创建完成" echo "=========================================" tree "$APP_ROOT" 2>/dev/null || find “$APP_ROOT” -type d
EOF

# chmod +x /fgedu/shell/setup_webapp.sh
# setup_webapp.sh myapp
=========================================
创建Web应用目录结构
应用名称: myapp
应用根目录: /opt/myapp
=========================================
mkdir: created directory ‘/opt/myapp’
mkdir: created directory ‘/opt/myapp/bin’
mkdir: created directory ‘/opt/myapp/conf’
mkdir: created directory ‘/opt/myapp/data’
mkdir: created directory ‘/opt/myapp/logs’
mkdir: created directory ‘/opt/myapp/temp’
mkdir: created directory ‘/opt/myapp/backup’
mkdir: created directory ‘/opt/myapp/conf/nginx’
mkdir: created directory ‘/opt/myapp/conf/php’
mkdir: created directory ‘/opt/myapp/conf/mysql’
mkdir: created directory ‘/opt/myapp/data/uploads’
mkdir: created directory ‘/opt/myapp/data/cache’
mkdir: created directory ‘/opt/myapp/data/sessions’
mkdir: created directory ‘/opt/myapp/logs/nginx’
mkdir: created directory ‘/opt/myapp/logs/php’
mkdir: created directory ‘/opt/myapp/logs/app’
mkdir: created directory ‘/opt/myapp/backup/daily’
mkdir: created directory ‘/opt/myapp/backup/weekly’
mkdir: created directory ‘/opt/myapp/backup/monthly’
mkdir: created directory ‘/opt/myapp/releases’
mkdir: created directory ‘/opt/myapp/releases/current’
mkdir: created directory ‘/opt/myapp/releases/previous’
mkdir: created directory ‘/opt/myapp/shared’

=========================================
目录结构创建完成
=========================================
/opt/myapp
/opt/myapp/backup
/opt/myapp/backup/daily
/opt/myapp/backup/weekly
/opt/myapp/backup/monthly
/opt/myapp/bin
/opt/myapp/conf
/opt/myapp/conf/mysql
/opt/myapp/conf/nginx
/opt/myapp/conf/php
/opt/myapp/data
/opt/myapp/data/cache
/opt/myapp/data/sessions
/opt/myapp/data/uploads
/opt/myapp/logs
/opt/myapp/logs/app
/opt/myapp/logs/nginx
/opt/myapp/logs/php
/opt/myapp/releases
/opt/myapp/releases/current
/opt/myapp/releases/previous
/opt/myapp/shared
/opt/myapp/temp

4.2 案例2:批量目录创建

# 批量目录创建实战

# 场景:为多个项目批量创建目录

# 1. 批量创建项目目录
# cat > /fgedu/shell/batch_create_projects.sh << 'EOF' #!/bin/bash # from:www.itpux.com.qq113257174.wx:itpux-com PROJECT_ROOT="/opt/projects" PROJECTS=("webapp" "api" "admin" "mobile" "worker") echo "批量创建项目目录..." for PROJECT in "${PROJECTS[@]}"; do PROJECT_DIR="$PROJECT_ROOT/$PROJECT" echo "创建项目: $PROJECT" mkdir -pv "$PROJECT_DIR"/{bin,conf,data,logs,temp,backup} # 设置权限 chmod 755 "$PROJECT_DIR" chmod 750 "$PROJECT_DIR"/{conf,data,backup} # 创建README echo "# $PROJECT 项目" > “$PROJECT_DIR/README.md”
done

echo “”
echo “所有项目目录创建完成!”
ls -l “$PROJECT_ROOT”
EOF

# chmod +x /fgedu/shell/batch_create_projects.sh
# batch_create_projects.sh

# 2. 创建日期序列目录
# cat > /fgedu/shell/create_date_dirs.sh << 'EOF' #!/bin/bash YEAR=${1:-$(date +%Y)} MONTH=${2:-$(date +%m)} BASE_DIR="/backup/daily" echo "创建 $YEAR 年 $MONTH 月的日期目录..." # 获取月份天数 DAYS=$(cal $MONTH $YEAR | awk 'NF {DAYS = $NF}; END {print DAYS}') for DAY in $(seq -w 1 $DAYS); do DATE_DIR="$BASE_DIR/$YEAR/$MONTH/$DAY" mkdir -pv "$DATE_DIR" done echo "" echo "日期目录创建完成!" ls -R "$BASE_DIR/$YEAR/$MONTH" EOF # chmod +x /fgedu/shell/create_date_dirs.sh # create_date_dirs.sh 2026 04 # 3. 创建用户组共享目录 # cat > /fgedu/shell/create_shared_dirs.sh << 'EOF' #!/bin/bash SHARED_ROOT="/shared" GROUPS=("dev" "test" "ops" "dba") echo "创建共享目录..." for GROUP in "${GROUPS[@]}"; do GROUP_DIR="$SHARED_ROOT/$GROUP" echo "创建 $GROUP 组共享目录" mkdir -pv "$GROUP_DIR"/{documents,scripts,tools,backup} # 设置组权限 chown -R root:$GROUP "$GROUP_DIR" chmod 2770 "$GROUP_DIR" chmod 2770 "$GROUP_DIR"/* done echo "" echo "共享目录创建完成!" ls -l "$SHARED_ROOT" EOF # chmod +x /fgedu/shell/create_shared_dirs.sh # create_shared_dirs.sh

4.3 案例3:权限控制

# 权限控制实战

# 场景:创建具有不同权限级别的目录

# 1. 创建安全目录结构
# cat > /fgedu/shell/create_secure_dirs.sh << 'EOF' #!/bin/bash # from:www.itpux.com.qq113257174.wx:itpux-com SECURE_ROOT="/secure" echo "创建安全目录结构..." # 创建根目录(仅root可访问) mkdir -pv -m 700 "$SECURE_ROOT" # 创建机密目录(仅所有者可访问) mkdir -pv -m 700 "$SECURE_ROOT"/{confidential,private,secret} # 创建部门目录(仅特定组可访问) mkdir -pv -m 750 "$SECURE_ROOT"/{finance,hr,legal} chown root:finance "$SECURE_ROOT/finance" chown root:hr "$SECURE_ROOT/hr" chown root:legal "$SECURE_ROOT/legal" # 创建审计目录(仅root和audit组可访问) mkdir -pv -m 750 "$SECURE_ROOT/audit" chown root:audit "$SECURE_ROOT/audit" # 创建临时工作目录(所有用户可读写) mkdir -pv -m 1777 "$SECURE_ROOT/temp" echo "" echo "安全目录结构创建完成!" ls -la "$SECURE_ROOT" EOF # chmod +x /fgedu/shell/create_secure_dirs.sh # create_secure_dirs.sh # 2. 创建具有ACL权限的目录 # cat > /fgedu/shell/create_acl_dirs.sh << 'EOF' #!/bin/bash ACL_ROOT="/data/shared" echo "创建具有ACL权限的目录..." mkdir -pv "$ACL_ROOT" # 项目目录 mkdir -pv "$ACL_ROOT"/{project1,project2,project3} # 设置ACL权限 for PROJECT in project1 project2 project3; do PROJECT_DIR="$ACL_ROOT/$PROJECT" # 设置基础权限 chmod 750 "$PROJECT_DIR" # 设置ACL setfacl -R -m u:developer:rwx "$PROJECT_DIR" setfacl -R -m u:tester:rx "$PROJECT_DIR" setfacl -R -d -m u:developer:rwx "$PROJECT_DIR" setfacl -R -d -m u:tester:rx "$PROJECT_DIR" done echo "" echo "ACL目录创建完成!" getfacl "$ACL_ROOT/project1" EOF # chmod +x /fgedu/shell/create_acl_dirs.sh # create_acl_dirs.sh # 3. 创建具有SELinux上下文的目录 # cat > /fgedu/shell/create_selinux_dirs.sh << 'EOF' #!/bin/bash echo "创建具有SELinux上下文的目录..." # Web内容目录 mkdir -pv -Z unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/app1 # Web可写目录 mkdir -pv -Z unconfined_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/app1/uploads # CGI目录 mkdir -pv -Z unconfined_u:object_r:httpd_sys_script_exec_t:s0 /var/www/cgi-bin/app1 # 日志目录 mkdir -pv -Z system_u:object_r:httpd_log_t:s0 /var/log/httpd/app1 # 临时目录 mkdir -pv -Z system_u:object_r:httpd_tmp_t:s0 /tmp/app1 echo "" echo "SELinux目录创建完成!" ls -ldZ /var/www/html/app1 EOF # chmod +x /fgedu/shell/create_selinux_dirs.sh # create_selinux_dirs.sh

Part05-风哥经验总结与分享

5.1 mkdir命令总结

mkdir命令核心要点:

  • 基础用法:mkdir 目录名
  • 多级目录:mkdir -p path/to/directory
  • 权限设置:mkdir -m 755 directory
  • 批量创建:mkdir {dir1,dir2,dir3}
  • 显示过程:mkdir -v directory

5.2 常见问题解决

# mkdir常见问题解决

# 问题1: 目录已存在
# mkdir testdir
mkdir: cannot create directory ‘testdir’: File exists

# 解决方法:
mkdir -p testdir # 不报错
# 或检查目录是否存在
[ -d testdir ] || mkdir testdir

# 问题2: 权限不足
# mkdir /root/testdir
mkdir: cannot create directory ‘/root/testdir’: Permission denied

# 解决方法:
sudo mkdir /root/testdir

# 问题3: 父目录不存在
# mkdir /tmp/a/b/c/d
mkdir: cannot create directory ‘/tmp/a/b/c/d’: No such file or directory

# 解决方法:
mkdir -p /tmp/a/b/c/d

# 问题4: 目录名包含空格
# mkdir my directory
mkdir: cannot create directory ‘my’: Permission denied
mkdir: cannot create directory ‘directory’: Permission denied

# 解决方法:
mkdir “my directory”
mkdir my\ directory

# 问题5: 磁盘空间不足
# mkdir testdir
mkdir: cannot create directory ‘testdir’: No space left on device

# 解决方法:
df -h # 检查磁盘空间
# 清理空间或更换目录

5.3 实用技巧

# mkdir实用技巧

# 1. 创建目录并立即进入
mkcd() {
mkdir -p “$1” && cd “$1”
}

# 2. 创建目录并验证
create_dir() {
local dir=$1
mkdir -p “$dir” && {
echo “目录创建成功: $dir”
ls -ld “$dir”
} || {
echo “目录创建失败: $dir”
return 1
}
}

# 3. 创建目录并设置完整权限
create_secure_dir() {
local dir=$1
local owner=${2:-root}
local group=${3:-root}
local perm=${4:-750}

mkdir -p “$dir”
chown “$owner:$group” “$dir”
chmod “$perm” “$dir”
}

# 4. 创建临时目录并自动清理
create_temp_dir() {
local prefix=${1:-temp}
local tmpdir=$(mktemp -d -t ${prefix}_XXXXXX)
echo “$tmpdir”
# 使用后删除: rm -rf “$tmpdir”
}

# 5. 创建目录并设置粘滞位
mkdir -m 1777 /tmp/shared

# 6. 创建目录并设置SGID
mkdir -m 2770 /shared/project

# 7. 创建目录并设置SUID(通常不推荐)
mkdir -m 4755 /special/dir

# 8. 批量创建并设置不同权限
for dir in public private group; do
case $dir in
public) perm=755 ;;
private) perm=700 ;;
group) perm=750 ;;
esac
mkdir -m $perm “$dir”
done

风哥总结:mkdir命令虽然简单,但在系统管理和脚本开发中使用频率极高。掌握-p和-m选项的使用,可以大幅提高工作效率。在创建目录时,要考虑权限设置和目录结构的合理性,遵循系统规范和最佳实践。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息