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
创建了 hello
和 goodbye
这意味着该命令将创建满足您的请求所需的所有目录,如果该目录存在,则不会返回任何错误。
关于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】:请注意,-p
是 mkdir
命令的一个参数,而不是整个 Unix。每个命令都可以有它需要的任何参数。
在这种情况下,它表示“父母”,意思是mkdir
将创建一个目录和任何尚不存在的父母。
【讨论】:
以上是关于mkdir 的“-p”选项的主要内容,如果未能解决你的问题,请参考以下文章