Я разобрался с этим с помощью следующего уродливого хака:
$ type -a cd
cd is aliased to `cd $1 >/dev/null'
cd is a shell builtin
Другими словами, добавьте эту строку в свой ~ / .bashrc
:
alias cd='cd >/dev/null'
Для этого можно использовать find
:
find <dirpath> -perm 700 -type d -exec chmod 755 {} \; ## For directories
find <dirpath> -perm 600 -type f -exec chmod 644 {} \; ## For files
Вы можете сделать что-то вроде:
find. ! -type l -print0 |
perl -0 -lne '
$m = (lstat$_)[2] & 07777;
$u = ($m >> 6) & 5;
chmod $m | $u | ($u<<3), $_'
То есть взять права пользователя, удалить запись бит(& 5
)и или то в группу и другое разрешения.
Предполагая, что вы хорошо себя ведете в Unix и не используете пробелы в именах файлов:
for file in $(find. -type f -o -type d)
do \
user_perm=$(stat -c %a $file |cut -c1)
other_perm=$(($user_perm&5))
chmod $user_perm$other_perm$other_perm $file
done