Mkdir 结合“-p”标志

Mkdir combined with "-p" flag

我正在学习一个教程,在该教程中我必须创建一个目录,但还要传递 -p 标志。我尝试了 运行,得到了 syntax failure。于是想弄清楚-p做了什么,发现这个缩写是privileged的缩写。并发现

Script runs as "suid" (caution!)

开始查看这意味着什么,发现它意味着设置用户标识并阅读它

– When a command or script with SUID bit set is run, its effective UID becomes that of the owner of the file, rather than of the user who is running it. Source

不过,我还是不太明白。 我将目录设置为具有该 权限的目的是什么 我为什么要小心? 另外,我试过看这里但我看不到'找不到任何说明(使用我使用的不同搜索关键字)。另外,没有必要......但是,为什么我做 mkdir -p src/entities 会给我一个语法错误?我正在使用 Windows(但我也有一个用于 Anaconda 的 bash 包)。

看起来您正在学习类似 Unix 的教程,但是 运行 cmd.exe 中 Windows 上的命令。

如使用说明所述:

C:\>mkdir /?
Creates a directory.

MKDIR [drive:]path
MD [drive:]path

If Command Extensions are enabled MKDIR changes as follows:

MKDIR creates any intermediate directories in the path, if needed.
For example, assume \a does not exist then:

    mkdir \a\b\c\d

is the same as:

    mkdir \a
    chdir \a
    mkdir b
    chdir b
    mkdir c
    chdir c
    mkdir d

which is what you would have to type if extensions were disabled.

Windows 命令不使用 - 作为选项(特别是 cmd 内置的 mkdir 命令不理解 -p ).


关于“特权”的部分是针对 shell 选项 -p,如 bash -p。与mkdir -p无关,在man mkdir:

中有说明

-p, --parents

         no error if existing, make parent directories as needed

但同样,这仅适用于 Unix mkdir,不适用于 Windows / cmd

如果父目录不存在,“-p”会创建它们。

例如:

如果“第一个”目录不存在,则使用“-p”。

mkdir -p first/second  # "first" parent directory is created

如果“第一个”目录不存在,则不使用“-p”。

mkdir first/second  # "first" parent directory is not created 

mkdir: cannot create directory ‘first/second’: No such file or directory