mkdir的“ -p”选项


96

因此,这似乎不是我遇到的一个非常复杂的问题,但这是我找不到答案的问题。我对该-p选项在Unix中的功能感到困惑。在创建子目录然后在该目录中创建另一个子目录时,我将其用于实验室分配。它看起来像这样:

mkdir -p cmps012m/lab1

该文件位于具有正常权限(rlidwka)的私有目录中。哦,有人介意解释一下什么rlidwka意思吗?我并不是Unix的初学者,但是我并不真正了解这意味着什么。希望这不是一个太模糊的问题。


2
man mkdir会回答您的问题。至于“ rlidwka”,我不知道。您需要为我们提供更多背景信息。
基思·汤普森

Answers:


138

手册页是您可以找到的最佳信息来源...并且唾手可得:man mkdir产生有关-pswitch的信息:

-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在评论中指出的那样,并不是所有的Unix系统都支持ACL。因此,该rlidwka概念可能不适用于此处。


1
但是并非所有类Unix系统都支持ACL,因此rlidwka可能有意义也可能没有意义。
基思·汤普森2014年

1
@KeithThompson好吧,我同意,我只想提及首字母缩写所代表的意思。
Paulo Bu 2014年

1
是的,但是经常回答一个人的问题比提供理解答案所需的背景信息没有多大帮助。
基思·汤普森

1
我会在答案中指出。我只是不知道这一点。感谢您纠正我。
Paulo Bu

4
这个答案是说“ RTFM,让我为您谷歌搜索”的最冗长的方式,我很喜欢。我曾经是一个不懂任何事的Noobie实习生,在问我的经理之前,我应该忘了那个,我应该用Google搜索它。对这些新手放松一下;有时很难弄清楚要用什么。你不知道你不知道什么。但是经过多年的努力,每个人都变得更加精通谷歌搜索。
Dagrooms


3

mkdir [-switch]文件夹名称

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

从手册页:

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

例:

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

这将在framework文件夹内创建子文件夹会话,视图,缓存,而不考虑“ framework”是否较早可用。


2

请注意,这-p是该mkdir命令的一个参数,而不是整个Unix。每个命令都可以具有所需的任何参数。

在这种情况下,它的意思是“父母”,这意味着mkdir将创建一个目录以及所有尚不存在的父母。


2

PATH:但是,很早以前就回答过,将-p视为“ Path”(更容易记住)可能会更有用,因为这会导致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

如您所见,由于您不必弄清楚已有的内容和没有的内容,因此可以节省一些键入和思考的时间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.