`mkdir -p` 和 `install -d` 有什么区别?

`mkdir -p` 和 `install -d` 有什么区别?

就这两个命令对系统所做的更改而言,mkdir -p和执行的操作有什么区别?install -d

答案1

mkdir -p和 的主要区别在于install -d,如果目录已经存在,只会install -d尝试设置所有权和文件模式位

  • install -d将调用make_dir_parents设置preserve_existingfalse
  • mkdir -p将调用make_dir_parents设置preserve_existingtrue

如果preserve_existingtrue并且目录已经存在,该函数将不会尝试设置所有权和文件模式位。

mkdir -pinstall -d在 coreutils 中调用完全相同的make_dir_parents函数。

Coreutil 来源:

答案2

对于初学者来说,mkdir -p是 POSIX,install不是。然后,我们从GNUinstall文档

如果给出--directory( ) 选项,则创建每个 -dinstall目录以及任何丢失的父目录。u=rwx,go=rx无论-m选项或当前 umask如何,都会使用模式“ ” (755) 创建父目录。看目录 Setuid 和 Setgid,了解如何继承父目录的 set-user-ID 和 set-group-ID 位。

和:

' -d'
'创建所有缺少的父目录,--directory
为其提供默认属性。然后创建每个给定的目录,将其所有者、组和模式设置为命令行上给定的或默认值。

所以:

  1. 对于 GNU install,父目录的权限可能不同。
  2. install允许您设置叶目录的所有权。

相关内容