创建文件夹的层次结构,并设置权限。

问题描述 投票:0回答:1

mkdir 有选项。

  • -p 如果缺少的话,会创建所有的父目录
  • -m 这改变了用户权限。

对我来说,问题是 -m 755 只适用于叶目录。

mkdir -m 755 -p a/b/c -> c 的模式为755,但 aa/b 有模式700。(我希望a和ab也是755)

有没有简单的解决方案?(或者干脆遍历父母,然后逐个chmod?)

bash mkdir
1个回答
1
投票

这有点出乎mkdir的意料,我还以为-m标志会对所有创建的目录产生影响,而不仅仅是叶子节点。

我认为有两种简单的方法可以做到这一点。

  1. $ (umask 022; mkdir -p a/b/c)
  2. $ install -d -m 755 a/b/c

umask控制所有由shell创建的文件,并且是权限位的掩码(这使得这些值有点难以使用)。 把这两个命令放在括号里,意味着它只对那个子shell有效果。

使用安装工具是另一种选择。 使用-d选项,它的行为与mkdir -p相同,但-m标志将用于所有目录,而不仅仅是叶子节点。 install是coreutils软件包的一部分,很可能在任何系统上都可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.