创建文件夹已经存在时,mkdir -p完全安全吗


13

说我有一个文件夹:

./folder/

里面有很多文件,甚至还有子目录。

当我执行时:

mkdir -p folder

我什至不会看到任何错误,甚至是警告。因此,仅想确认一下,此命令是否会丢失或更改任何内容?


2
mkdir的帮助说,仅当目录不存在时才创建目录。对我来说,这意味着当目录存在时,什么也没做。
Marco Marco

Answers:


23

mkdir -p 如果目录已经存在并且目录的内容不会更改,则不会给您错误。

手动输入 mkdir


1
这个答案似乎不正确。如果目录存在,则mkdir确实会发出错误,除非使用-p标志。
亚伦·西卡利

错误地,您可以检查像这样的代码,if(err.code == 'EEXIST')如果目录已经存在,则此条件将为true。
user403173

12

一个可移植的脚本将依赖POSIX,它表示mkdir-p选项:

命名现有目录的每个目录操作数都将被忽略而不会出现错误。

如果没有错误报告,则说明该-p选件已经完成工作:

创建任何缺少的中间路径名组件。



0

你这样说

当我执行时,mkdir -p folder我什至不会看到任何错误,甚至是警告。

如果命令失败,您将看到一个错误。-p如果目录已经存在,则该标志仅抑制错误。

touch x
mkdir -p x
mkdir: cannot create directory ‘x’: File exists

如果您尝试以普通用户身份创建目录,例如,将发生相同的问题/etc

什么-p将抑制是当目标目录已经存在,将触发错误

mkdir y
mkdir -p y

但是,在所有情况下,您都不会丢失任何东西,并且什么都不会改变。在错误情况下,您将没有所需的目录。


这似乎更像是评论而不是答案。
G-Man说“恢复莫妮卡”

我对此感到纳闷,但我特别反驳了OP的问题:“ 执行时,mkdir -p folder我什至不会看到任何错误,甚至是警告。
roaima
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.