bash - 创建文件夹层次结构,并设置权限
问题描述
mkdir
有选项:
-p
如果丢失,则创建所有父目录-m
这会更改用户权限。
对我来说问题是,这-m 755
仅适用于叶子目录。
mkdir -m 755 -p a/b/c
->c
模式为 755,但a
模式a/b
为 700。(我希望 a 和 a/b 也是 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 包的一部分,很可能在任何系统上都可用。
推荐阅读
- javascript - 如何防止图像超出屏幕边框?
- kubernetes - 问题 #4017 的 Spring Cloud 数据流服务器自定义构建
- javascript - 刷新后无法读取未定义的属性“url”
- ansible - 不使用 CLI 在 Ansible Tower 上创建保管库
- powershell - Powershell:将函数添加到没有变量的命令行中
- javascript - 将三元运算符更改为非三元运算符
- android - Android Studio 是否将构建机器信息包含在 apk 中?
- bash - Read -s with timeout 在超时后显示文本
- python - 用于读取 .txt 并按字节创建 .csv 表的 Python 代码
- for-loop - 用 Liquid 语言迭代对象数组