mkdir
有选项。
-p
如果缺少的话,会创建所有的父目录-m
这改变了用户权限。对我来说,问题是 -m 755
只适用于叶目录。
mkdir -m 755 -p a/b/c
-> c
的模式为755,但 a
和 a/b
有模式700。(我希望a和ab也是755)
有没有简单的解决方案?(或者干脆遍历父母,然后逐个chmod?)
这有点出乎mkdir的意料,我还以为-m标志会对所有创建的目录产生影响,而不仅仅是叶子节点。
我认为有两种简单的方法可以做到这一点。
$ (umask 022; mkdir -p a/b/c)
$ install -d -m 755 a/b/c
umask控制所有由shell创建的文件,并且是权限位的掩码(这使得这些值有点难以使用)。 把这两个命令放在括号里,意味着它只对那个子shell有效果。
使用安装工具是另一种选择。 使用-d选项,它的行为与mkdir -p相同,但-m标志将用于所有目录,而不仅仅是叶子节点。 install是coreutils软件包的一部分,很可能在任何系统上都可以使用。