我正在尝试更改用户将指定的路径中每个目录的权限。这将在bash脚本中完成。例如:
DIR = /a/b/c/d/e/f/
chmod 777 /a/b/c/d/e/f/
chmod 777 /a/b/c/d/e/
chmod 777 /a/b/c/d/
chmod 777 /a/b/c/
chmod 777 /a/b/
chmod 777 /a/
777只是一个例子。解决方案应允许任何权限。
我不想更改目录中文件的权限,我不能假设这些是唯一的子目录。我只想更改用户指定路径中明确的权限。
答案 0 :(得分:0)
显而易见的方法是从最深处开始,并在循环中使用dirname
向上迭代:
perms=a+rX
d=a/b/c/d/e/f
while [ "$d" != . ]
do
chmod $perms "$d"
d=$(dirname "$d")
done
这是所有便携式外壳,因此不依赖于Bash - 任何符合POSIX标准的外壳都足够了。
我使用过相对目录名称,因为您真的不希望在真实系统上更改/
的权限。
您当然可以使用替换扩展而不是调用
dirname
如果您需要:d=${d%/*}
。
答案 1 :(得分:-1)
您确定要在某些目录上设置777吗?
无论如何,您可以使用dirname
实现此目的并在$DIR
上递归到根目录:
DIR=/a/b/c/d/e/f/
while [[ $DIR =~ /.+ ]] ;do
chmod 777 $DIR
DIR=$(dirname $DIR)
done