Помогите подредактировать bash скрипт

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Sniker
Сообщения: 128

Помогите подредактировать bash скрипт

Сообщение Sniker »

Ребята, я тут нашел скриптик, который рекурсивно меняет права на файлы и папки. Он хорошь, но если в имени файла или папки есть пробел, то он затыкается.
Помогите подправить его, чтобы он мог работать и с файлами и папками, которые содержат пробелы. Может нужно просто добавить кавычки куда-то. Но я не знаю как это сделать. А скриптик очень нужен.

===== начало текста скрипта =====
#!/bin/sh

ROOT_DIR=$1
DIR_PERM=$2
FILE_PERM=$3

for name in $(find ${ROOT_DIR})
do
if [ -d $name ]
then
chmod ${DIR_PERM} ${name}
echo "DIRECTORY: '${name}' PERMS CHANGED TO 0x${DIR_PERM}"
else
chmod ${FILE_PERM} ${name}
echo "FILE: '${name}' PERMS CHANGED TO 0x${FILE_PERM}"
fi
done
===== конец текста скрипта =====

Юзается он так: doperm.sh /mnt/archive/oldmail 00770 00600
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5433
ОС: Gentoo

Re: Помогите подредактировать bash скрипт

Сообщение /dev/random »

===== начало текста скрипта =====
#!/bin/sh

ROOT_DIR=$1
DIR_PERM=$2
FILE_PERM=$3

for name in $(find ${ROOT_DIR})
do
if [ -d $name ]
then
chmod ${DIR_PERM} ${name}
echo "DIRECTORY: '${name}' PERMS CHANGED TO 0x${DIR_PERM}"
else
chmod ${FILE_PERM} ${name}
echo "FILE: '${name}' PERMS CHANGED TO 0x${FILE_PERM}"
fi
done
===== конец текста скрипта =====


===== начало текста скрипта =====
#!/bin/sh
find "$1" -type d -exec chmod "$2" "{}" ";" -or -type f -exec chmod "$3" "{}" ";"
===== конец текста скрипта =====
;)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Помогите подредактировать bash скрипт

Сообщение sash-kan »

можно на шесть символов короче:
find "$1" -type d -exec chmod "$2" {} \; -or -type f -exec chmod "$3" {} \;

а если учесть, что набор прав в принципе не может содержать пробелы, то ещё на четыре короче;
find "$1" -type d -exec chmod $2 {} \; -or -type f -exec chmod $3 {} \;
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
BIgAndy
Сообщения: 1923

Re: Помогите подредактировать bash скрипт

Сообщение BIgAndy »

Sniker писал(а):
25.11.2009 19:39
Ребята, я тут нашел скриптик, который рекурсивно меняет права на файлы и папки. Он хорошь, но если в имени файла или папки есть пробел, то он затыкается.
Помогите подправить его, чтобы он мог работать и с файлами и папками, которые содержат пробелы. Может нужно просто добавить кавычки куда-то. Но я не знаю как это сделать. А скриптик очень нужен.

chown/chmod чем не подходят?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Помогите подредактировать bash скрипт

Сообщение SLEDopit »

BIgAndy писал(а):
25.11.2009 22:48
chown/chmod чем не подходят?
вероятно тем, что в рекурсивном режиме меняет права без разбора и на папки и на директории. а для директории права rw--w-r--, мгко выражаясь, являются не самыми лучшими, в то время как для файла rwxr-xr-x тоже не хорошо)
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
BIgAndy
Сообщения: 1923

Re: Помогите подредактировать bash скрипт

Сообщение BIgAndy »

SLEDopit писал(а):
25.11.2009 22:57
BIgAndy писал(а):
25.11.2009 22:48
chown/chmod чем не подходят?
вероятно тем, что в рекурсивном режиме меняет права без разбора и на папки и на директории. а для директории права rw--w-r--, мгко выражаясь, являются не самыми лучшими, в то время как для файла rwxr-xr-x тоже не хорошо)

Да? Что-то про +-X и прочие полезные фичи забыли...
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Помогите подредактировать bash скрипт

Сообщение t.t »

BIgAndy писал(а):
25.11.2009 23:15
Да? Что-то про +-X и прочие полезные фичи забыли...
Не только +-, =X тоже можно. На сколько символов короче, считать не буду. (:
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5433
ОС: Gentoo

Re: Помогите подредактировать bash скрипт

Сообщение /dev/random »

BIgAndy писал(а):
25.11.2009 23:15
Да? Что-то про +-X и прочие полезные фичи забыли...

t.t писал(а):
26.11.2009 10:48
Не только +-, =X тоже можно. На сколько символов короче, считать не буду. (:

Есть одно но. Флаг X оставит исполнимость не только на каталогах, но и на тех файлах, на которых этот флаг уже есть. Так что он абсолютно не подходит, если нужно, к примеру, _снять_ флаг исполнимости у файлов, оставив его, разумеется, у каталогов.
Спасибо сказали:
Sniker
Сообщения: 128

Re: Помогите подредактировать bash скрипт

Сообщение Sniker »

Вау! Ребята, вот спасибо! Порадовали! Столько полезных советов.
Спасибо сказали: