mkdir 的“-p”选项

Posted

技术标签:

【中文标题】mkdir 的“-p”选项【英文标题】:mkdir's "-p" option 【发布时间】:2014-05-09 09:31:06 【问题描述】:

所以这似乎不是一个非常复杂的问题,但我无法找到答案。我对 -p 选项在 Unix 中的作用感到困惑。我将它用于实验室任务,同时创建一个子目录,然后在该子目录中创建另一个子目录。它看起来像这样:

mkdir -p cmps012m/lab1

这是一个具有正常权限的私有目录 (rlidwka)。哦,有人介意解释一下rlidwka 的含义吗?我不是 Unix 的菜鸟,但我并不真正熟悉这意味着什么。希望这不是一个太模糊的问题。

【问题讨论】:

man mkdir 将回答您的问题。至于“rlidwka”,我不知道;你需要给我们更多的背景信息。 【参考方案1】:

手册页是您能找到的最佳信息来源......而且触手可及:man mkdir 产生了这个关于 -p 开关:

-p, --parents
    no error if existing, make parent directories as needed

用例示例:假设我想创建目录 hello/goodbye 但不存在:

$mkdir hello/goodbye
mkdir:cannot create directory 'hello/goodbye': No such file or directory
$mkdir -p hello/goodbye
$

-p 创建了 hellogoodbye

这意味着该命令将创建满足您的请求所需的所有目录,如果该目录存在,则不会返回任何错误

关于rlidwka,Google 对首字母缩略词的记忆力非常好:)。我的搜索返回了这个例如:http://www.cs.cmu.edu/~help/afs/afs_acls.html

 Directory permissions

l (lookup)
    Allows one to list the contents of a directory. It does not allow the reading of files. 
i (insert)
    Allows one to create new files in a directory or copy new files to a directory. 
d (delete)
    Allows one to remove files and sub-directories from a directory. 
a (administer)
    Allows one to change a directory's ACL. The owner of a directory can always change the ACL of a directory that s/he owns, along with the ACLs of any subdirectories in that directory. 

File permissions

r (read)
    Allows one to read the contents of file in the directory. 
w (write)
    Allows one to modify the contents of files in a directory and use chmod on them. 
k (lock)
    Allows programs to lock files in a directory. 

因此rlidwka 表示:所有权限

值得一提的是,正如@KeithThompson 在 cmets 中指出的那样,并非所有 Unix 系统都支持 ACL。所以rlidwka 的概念可能不适用于这里。

【讨论】:

但并非所有类 Unix 系统都支持 ACL,因此 rlidwka 可能有意义,也可能没有意义。 @KeithThompson 好吧,我同意,我只是想提一下首字母缩略词的含义。 是的,但通常只是回答某人的问题不如提供理解答案所需的背景信息有用。 我会在答案中指出。我只是没有意识到这一点。感谢您纠正我。 这个答案是说“RTFM,让我为你搜索”的最冗长的方式,我喜欢它。我曾经是一个什么都不知道的新手实习生,在问我的经理之前我忘记了这一点,我应该在谷歌上搜索一下。对这些新人放轻松;有时很难弄清楚要谷歌什么。你不知道你不知道什么。但是,经过多年的努力,每个人在谷歌搜索方面都会变得更加熟练。【参考方案2】:

mkdir [-switch] 文件夹名称

-p是一个可选的开关,它会创建子文件夹和父文件夹,即使父文件夹不存在。

来自手册页:

-p, --parents no error if existing, make parent directories as needed

例子:

mkdir -p storage/framework/sessions,views,cache

这将在框架文件夹中创建子文件夹会话、视图、缓存,而不管“框架”是否更早可用。

【讨论】:

【参考方案3】:

如果您尝试使用top-down 方法创建目录,将使用-p|--parent。这将创建父目录,然后创建子目录,依此类推,如果不存在的话。

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

关于rlidwka,这意味着授予完全或管理访问权限。在这里找到它https://itservices.stanford.edu/service/afs/intro/permissions/unix。

【讨论】:

【参考方案4】:

PATH:很久以前就回答了,但是,将 -p 视为“路径”(更容易记住)可能更有帮助,因为这会导致 mkdir 创建路径中不存在的每个部分。

mkdir -p /usr/bin/comm/diff/er/fence

如果 /usr/bin/comm 已经存在,它的行为类似于: mkdir /usr/bin/comm/diff mkdir /usr/bin/comm/diff/er mkdir /usr/bin/comm/diff/er/fence

如您所见,它节省了您打字和思考的时间,因为您不必弄清楚什么已经存在,什么不存在。

【讨论】:

【参考方案5】:

请注意,-pmkdir 命令的一个参数,而不是整个 Unix。每个命令都可以有它需要的任何参数。

在这种情况下,它表示“父母”,意思是mkdir 将创建一个目录和任何尚不存在的父母。

【讨论】:

以上是关于mkdir 的“-p”选项的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用命令——mkdir

《Linux学习并不难》文件/目录管理:mkdir命令创建目录

工作中常用Linux命令:mkdir命令

Linux常用命令简述--mkdir与touch

Linux mkdir命令

mkdir 创建目录