Mkdir与" -p"标志

时间:2018-04-20 07:53:41

标签: windows shell cmd mkdir

我正在学习一个教程,我必须创建一个目录,但也要传递-p标志。我试过运行它,我得到了syntax failure。所以我想弄明白-p做了什么,发现这个缩写是privileged的缩写。并找到了

  

脚本运行为" suid" (小心!)

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

  

- 当运行具有SUID位设置的命令或脚本时,其有效UID将成为文件所有者的UID,而不是运行它的用户的UID。 Source

但是,我仍然不太明白。 我设置目录以获得特权的目的是什么?我为什么要小心?另外,我试着看这里,但我找不到任何澄清(使用我使用的不同搜索关键字)。此外,没有必要......但是,为什么我会mkdir -p src/entities给我一个语法失败?我正在使用Windows(但我也有一个用于Anaconda的bash包)。

2 个答案:

答案 0 :(得分:1)

"-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

答案 1 :(得分:0)

看起来您正在关注Unix-ish教程,但在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命令不会使用-作为选项(特别是mkdir内置的cmd命令无法理解-p)。

关于“特权”的部分适用于 shell选项 -p,与bash -p中一样。它与mkdir -p无关,man mkdir中解释了这一点:

  

-p--parents

     

如果存在则没有错误,根据需要创建父目录

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