我正在学习一个教程,我必须创建一个目录,但也要传递-p
标志。我试过运行它,我得到了syntax failure
。所以我想弄明白-p
做了什么,发现这个缩写是privileged的缩写。并找到了
脚本运行为" suid" (小心!)
开始查看这意味着什么,发现它意味着设置用户识别并阅读
- 当运行具有SUID位设置的命令或脚本时,其有效UID将成为文件所有者的UID,而不是运行它的用户的UID。 Source
但是,我仍然不太明白。 我设置目录以获得特权的目的是什么?我为什么要小心?另外,我试着看这里,但我找不到任何澄清(使用我使用的不同搜索关键字)。此外,没有必要......但是,为什么我会mkdir -p src/entities
给我一个语法失败?我正在使用Windows(但我也有一个用于Anaconda的bash包)。
答案 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
。