所以这似乎不是一个非常复杂的问题,但我找不到答案。我对Unix中-p
选项的作用感到困惑。我在创建子目录时使用它进行实验室分配,然后在该子目录中使用另一个子目录。它看起来像这样:
mkdir -p cmps012m/lab1
这是在具有正常权限(rlidwka
)的私人目录中。哦,有人会介意对rlidwka
的含义做一些解释吗?我不是Unix的总菜鸟,但我并不熟悉这意味着什么。希望这个问题不是太模糊。
答案 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
同时创建了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在评论中指出的那样,并非所有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)
请注意,-p
是mkdir
命令的参数,而不是整个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
如您所见,由于您不必弄清楚已有的内容和不存在的内容,因此省去了打字和思考的麻烦。