就这两个命令对系统所做的更改而言,mkdir -p
和执行的操作有什么区别?install -d
答案1
mkdir -p
和 的主要区别在于install -d
,如果目录已经存在,只会install -d
尝试设置所有权和文件模式位。
install -d
将调用make_dir_parents
设置preserve_existing
为false
mkdir -p
将调用make_dir_parents
设置preserve_existing
为true
。
如果preserve_existing
是true
并且目录已经存在,该函数将不会尝试设置所有权和文件模式位。
mkdir -p
并install -d
在 coreutils 中调用完全相同的make_dir_parents
函数。
Coreutil 来源:
答案2
对于初学者来说,mkdir -p
是 POSIX,install
不是。然后,我们从GNUinstall
文档:
如果给出
--directory
( ) 选项,则创建每个-d
install
目录以及任何丢失的父目录。u=rwx,go=rx
无论-m
选项或当前 umask如何,都会使用模式“ ” (755) 创建父目录。看目录 Setuid 和 Setgid,了解如何继承父目录的 set-user-ID 和 set-group-ID 位。
和:
'
-d
'
'创建所有缺少的父目录,--directory
并
为其提供默认属性。然后创建每个给定的目录,将其所有者、组和模式设置为命令行上给定的或默认值。
所以:
- 对于 GNU
install
,父目录的权限可能不同。 install
允许您设置叶目录的所有权。