mkdir" -p"选项

时间:2014-03-29 22:50:01

标签: unix command-line command-line-arguments directory-structure

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

mkdir -p cmps012m/lab1

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

5 个答案:

答案 0 :(得分:111)

手册页是您可以找到的最佳信息来源......并且触手可及: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在评论中指出的那样,并非所有Unix系统都支持ACL。因此rlidwka概念可能不适用于此。

答案 1 :(得分:4)

如果您尝试使用-p|--parent方法创建目录,则将使用

top-down。这将创建父目录,然后创建子目录,依此类推,如果不存在。

  

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

关于rlidwka,这意味着提供完整或管理权限。在https://itservices.stanford.edu/service/afs/intro/permissions/unix找到它。

答案 2 :(得分:3)

mkdir [-switch]文件夹名称

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

在手册页中:

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

示例:

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

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

答案 3 :(得分:2)

请注意,-pmkdir命令的参数,而不是整个Unix。每个命令都可以包含所需的任何参数。

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

答案 4 :(得分:1)

PATH:但是,很早以前就回答过,将-p视为“ Path”(更容易记住)可能更有用,因为这会导致mkdir创建尚不存在的路径的每个部分。 / p>

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

如您所见,由于您不必弄清楚已有的内容和不存在的内容,因此省去了打字和思考的麻烦。