mkdir -p 带有大括号的目录错误创建

mkdir -p 带有大括号的目录错误创建

我在Ubuntu服务器16.04 xenial中执行了以下代码:

mkdir -p /root/backups/{db, dirs}

我记得在另一个系统中,它就像魅力一样创建所有 3 个目录:

/root/backups/
/root/backups/db
/root backup/dirs

然而这一次的结果却是:

/root/backups/
/root/backups/{db,

为什么这个结果是部分的、破碎的?

答案1

Bash 与任何 POSIX shell 一样,将命令拆分为标记扩展词(在 Bash 中,包括大括号扩展)。

mkdir -p /root/backups/{db, dirs}

包含空格,因此该命令首先被拆分为标记mkdir-p/root/backups/{db,dirs}。这些都不需要进一步扩展,因此mkdir使用三个参数-p/root/backups/{db和运行dirs}。它{db/root/backups、 和dirs}当前目录中创建。

如果你删除空格,你就会得到你想要的行为。

相关内容