我正在网络服务器上创建一个我想要可执行的远程目录路径。我使用如下命令远程创建它:
ssh user@machine mkdir -p a/b/c/d/e/f
接下来,我希望能够chmod目录a
- f
,但避免在远程目录根目录上执行chmod -r
。
是否有一个优雅的机制从a/b/c/d/e/f
路径开始并在不解析每个chmod的情况下执行有效的chmod a+x a; chmod a+x a/b; chmod a+x a/b/c; ...
?
答案 0 :(得分:1)
有人认为您可能会尝试按如下方式创建一个远程bash脚本(目录名称应以空格分隔):
#!/bin/bash
for i in $*
do
mkdir $i
chmod a+x $i
cd $i
done
或者您可以将umask
设置为umask 066
,这将设置您创建的任何内容的默认权限。有关说明,请参阅this网站。
答案 1 :(得分:1)
可能是这样的:
DIR=
for i in a b c d e f; do
DIR=$DIR$i/
chmod a+x $DIR
done
答案 2 :(得分:0)
#!/bin/sh
perm=$1
shift
# iterate over all argument paths
for p; do
# chmod up successively from destination
while true; do
case $p in
*/* ) chmod "$perm" "$p"
p=${p%/*} ;;
* ) break ;;
esac
done
done
答案 3 :(得分:-1)
您可以使用find
命令
find /path_at_remote -type d -exec chmod a+x "{}" \; (not tested)