shell Mkdir与“-p”标志组合使用

ztyzrc3y  于 2023-02-09  发布在  Shell
关注(0)|答案(2)|浏览(213)

我正在学习一个教程,其中我必须创建一个目录,但也传递-p标志。我尝试运行它,我得到了一个syntax failure。所以我想弄清楚-p做了什么,发现这个缩写是privileged的缩写。
脚本以“suid”运行(注意!)
开始研究这意味着什么,发现它意味着设置用户标识并阅读

  • 运行设置了SUID位的命令或脚本时,其有效UID将变为文件所有者的UID,而不是运行该文件的用户的UID。Source
    但是,我仍然不太明白。**我设置目录具有该 * 特权 * 的目的是什么?为什么要小心?**另外,我尝试在此处查找,但找不到任何说明(用我用的不同搜索关键词)。还有,没必要。。但是,为什么我做mkdir -p src/entities会给予我一个语法错误?我使用的是Windows(但我也有一个Anaconda的Bash包)。
7bsow1i6

7bsow1i61#

看起来你正在学习一个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中对此进行了解释:
x1米9英寸1x,--parents
如果存在则没有错误,根据需要创建父目录
但同样,这只适用于Unix mkdir,而不适用于Windows /cmd

syqv5f0l

syqv5f0l2#

如果父目录不存在,则使用"-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

相关问题