mmd 命令是mtools工具集的一部分,用于在MS-DOS文件系统中创建新目录。它与Linux系统中的mkdir命令功能相似,但是专门用于操作MS-DOS格式的存储设备(如软盘、U盘等),并且不需要挂载设备即可直接操作。
a:\directory),mkdir使用Linux路径格式-m选项设置权限-p选项递归创建mmd [选项] MS-DOS目录路径 [MS-DOS目录路径2 ...]
可以同时创建多个目录,目录路径使用MS-DOS格式。如果不指定驱动器,将使用默认驱动器。
| 选项 | 说明 |
|---|---|
-v 或 --verbose |
详细模式,显示创建的目录信息 |
--help |
显示帮助信息 |
--version |
显示版本信息 |
# 在Debian/Ubuntu系统中安装
sudo apt-get install mtools
# 在CentOS/RHEL系统中安装
sudo yum install mtools
# 在Fedora系统中安装
sudo dnf install mtools
# 在Arch Linux中安装
sudo pacman -S mtools
# 验证安装
mmd --version
# 在A:驱动器根目录创建名为"documents"的目录
mmd a:\documents
# 在C:驱动器创建目录
mmd c:\windows\temp
# 创建多个目录
mmd a:\dir1 a:\dir2 a:\dir3
# 首先设置当前MS-DOS工作目录
mcd a:\
# 在当前驱动器创建目录(相对路径)
mmd backup
# 这会在A:驱动器根目录创建backup目录
如果不指定驱动器,mmd会使用当前MS-DOS工作目录(由mcd命令设置)。
# 显示创建的目录信息
mmd -v a:\temp
# 输出: Creating directory a:\temp
# 详细模式下创建多个目录
mmd -v a:\dir1 a:\dir2 a:\dir3
# 创建带空格的目录名(使用引号)
mmd "a:\my documents"
# 创建带下划线的目录
mmd a:\my_project
# 创建带连字符的目录
mmd a:\my-project
# 创建以点开头的目录(MS-DOS通常不支持,但可以尝试)
mmd a:\.config
# 注意:MS-DOS有文件名限制,某些特殊字符可能不允许使用
与Linux的mkdir -p不同,mmd不支持递归创建多级目录。如果父目录不存在,mmd会报错。必须逐级创建目录。
# 错误的方式:直接创建多级目录会失败
mmd a:\level1\level2\level3
# 错误信息:Cannot initialize 'A:' (没有那个文件或目录) 或类似
# 正确的方式:逐级创建
mmd a:\level1
mmd a:\level1\level2
mmd a:\level1\level2\level3
# 或者使用脚本批量创建
for dir in level1 level1/level2 level1/level2/level3; do
mmd "a:\\$dir"
done
#!/bin/bash
# create_project_structure.sh - 在MS-DOS磁盘上创建项目目录结构
DRIVE="a:"
BASE_DIR="$DRIVE\project"
# 创建基础目录
mmd "$BASE_DIR"
# 创建子目录
mmd "$BASE_DIR\src"
mmd "$BASE_DIR\src\main"
mmd "$BASE_DIR\src\test"
mmd "$BASE_DIR\docs"
mmd "$BASE_DIR\lib"
mmd "$BASE_DIR\data"
mmd "$BASE_DIR\backup"
echo "项目目录结构创建完成"
echo "使用 mdir $BASE_DIR 查看目录内容"
# 准备软盘进行数据备份
mmd a:\backup
mmd a:\backup\documents
mmd a:\backup\photos
mmd a:\backup\music
mmd a:\backup\system
# 查看创建的目录
mdir a:\
# 创建DOS启动盘的标准目录结构
mmd a:\DOS
mmd a:\WINDOWS
mmd a:\WINDOWS\SYSTEM
mmd a:\TEMP
mmd a:\PROGRAMS
mmd a:\GAMES
# 创建配置文件目录
mmd a:\CONFIG
#!/bin/bash
# create_dirs_on_multiple_disks.sh - 在多个磁盘上创建相同目录结构
# 驱动器列表
DRIVES="a: b: c:"
# 要创建的目录列表
DIRS="data temp backup logs"
for drive in $DRIVES; do
echo "在驱动器 $drive 上创建目录..."
# 检查驱动器是否可用
if mcd "$drive" 2>/dev/null; then
for dir in $DIRS; do
mmd "$drive\\$dir"
done
echo "驱动器 $drive 目录创建完成"
else
echo "驱动器 $drive 不可用,跳过"
fi
done
# 1. 先切换到目标驱动器
mcd a:\
# 2. 使用相对路径创建目录
mmd newdir
# 3. 创建子目录
mmd newdir\subdir
# 4. 查看当前工作目录
mcd
# 输出: A:\
# 5. 查看创建的目录
mdir a:\newdir
mcd命令设置当前MS-DOS工作目录,这样mmd就可以使用相对路径创建目录。
# 如果目录已存在,mmd会报错
mmd a:\existing_dir
# 错误信息:File exists
# 在脚本中处理这种情况
DIR_NAME="a:\temp"
if ! mmd "$DIR_NAME" 2>/dev/null; then
echo "目录已存在: $DIR_NAME"
# 可以选择跳过或删除后重新创建
fi
#!/bin/bash
# check_directory_creation.sh - 检查目录是否创建成功
DIR_PATH="a:\test_dir"
echo "正在创建目录: $DIR_PATH"
mmd -v "$DIR_PATH"
# 检查mmd命令的退出状态
if [ $? -eq 0 ]; then
echo "目录创建成功"
# 验证目录是否存在
if mdir "$DIR_PATH" 2>/dev/null; then
echo "目录验证成功"
else
echo "警告:目录创建成功但无法访问"
fi
else
echo "目录创建失败"
exit 1
fi
在现代Linux系统中,更常见的做法是挂载MS-DOS文件系统后使用标准的mkdir命令:
# 挂载软盘或U盘
sudo mount -t vfat /dev/sdb1 /mnt/dos
# 使用mkdir命令创建目录
mkdir /mnt/dos/newdir
mkdir -p /mnt/dos/path/to/multilevel/dir # 支持递归创建
# 卸载
sudo umount /mnt/dos
优点:可以使用mkdir命令的所有丰富选项,包括递归创建、设置权限等。
# 1. 命令未找到错误
# 检查是否安装了mtools
which mtools
# 如果未安装,请安装mtools
sudo apt install mtools
# 2. "无法初始化驱动器"错误
# 检查设备是否存在且可访问
ls -l /dev/fd0
# 确保软盘已插入或设备已连接
# 3. "权限被拒绝"错误
# 使用sudo或以正确用户身份运行
sudo mmd a:\newdir
# 4. "文件已存在"错误
# 检查目录是否已存在
mdir a:\ | grep newdir
# 如果存在,选择其他名称或先删除
# 5. "没有那个文件或目录"错误(创建多级目录时)
# mmd不支持递归创建,必须逐级创建
mmd a:\parent
mmd a:\parent\child
# 6. 驱动器未配置错误
# 检查mtools配置文件
cat ~/.mtoolsrc
# 确保驱动器已正确配置
# 7. 磁盘空间不足
# 检查磁盘空间(使用其他工具,如mdu)
# 清理空间后重试
| 文件系统 | 目录名长度 | 允许字符 | 禁止字符 |
|---|---|---|---|
| FAT12/FAT16 | 8个字符(主名)+ 3个字符(扩展名) | A-Z, 0-9, 少数特殊字符(如_、-、$、~等) | * ? . , ; : / \ | + = < > [ ] ( ) 空格 |
| VFAT/FAT32 | 最多255个字符(包括路径) | 大多数字符(支持长文件名) | / \ : * ? " < > | |
mmd命令是mtools工具集的一部分,最初是为了在Unix系统上访问MS-DOS软盘而开发的。在早期,直接挂载DOS文件系统可能会遇到兼容性问题,mtools提供了无需挂载的直接访问方式。
现代适用场景: