На этот вопрос уже есть ответ здесь:
Я хотел бы узнать, есть ли какой-нибудь способ предоставить разрешение на выполнение всем файлам, созданным в определенной директории по умолчанию.
Т.е.,
Если я создаю файл, скажем foo.sh
в каталоге fooscripts
, он должен иметь разрешение на выполнение по умолчанию.
Но если я создам тот же файл вне fooscripts
, он должен иметь обычное разрешение.
Как упомянуто, можно использовать inotify-tools
(inotifywait
) смотреть определенный каталог за изменениями, например, сценарием ниже, и впоследствии установить новый исполняемый файл файлов рекурсивно.
Сценарий использует inotifywait
- команда, которая инициирована определенными событиями, установленными -e
- опция. К счастью команда может использоваться в сочетании с несколькими типами событий.
Так как Вы хотите, чтобы файлы в каталоге были исполняемым файлом в сценарии, два события установлены:
-e move
который заметит файлы, перемещенные в каталог, и
-e create
который заметит новые файлы, созданные в каталоге.
Кроме того, опции:
-m -r
должны сделать команду выполненной, неограниченно долго ("контролируют") и рекурсивно в каталоге, в то время как:
--format '%w%f'
производит каталог (путь к файлу, %w
) плюс имя файла (%f
) это вызвало событие.
Больше на опциях inotifywait
может быть найден здесь, или, как всегда, в man inotifywait
#!/bin/sh
# you might want to change the directory below into the targeted directory
DIR="/home/jacob/Bureaublad/test123"
inotifywait -m -r -e move -e create --format '%w%f' "$DIR" | while read f
do
chmod +x "$f"
done
Необходимо будет, вероятно, установить inotify-tools
во-первых:
sudo apt-get install inotify-tools
Скопируйте сценарий в пустой файл, сохраните его как set_executable.sh
В заголовке сценария, установленного путь к целенаправленной папке:
# change the directory below into the targeted directory
DIR="/home/jacob/Bureaublad/test123"
... и тестовый прогон сценарий от терминала.
Отметьте это notifywait
действия на изменениях (события). Это подразумевает, что файлы, которые были добавлены или созданы перед сценарием, работали, не будет произведен. Ни будет это пере - установило исполняемый файл файлов вручную и при преднамеренной установке их, чтобы не быть исполняемым файлом, в то время как они в целенаправленном каталоге.
Нет. Вы могли использовать inotify
для наблюдения каталога и chmod
новые файлы.
Вот то, как узнать приблизительно inotify
:
man -k inotify
for i in $( man -k inotify | awk '{ print $1 }' ) ; do
man $i
read -p "Print?: " ans
if [[ "x$ans" = "xy" ]] ; then
man -t $i | lpr -J $i
fi
done
# sr is from surfraw, Shell Users Revoultionary Front Rage Against the Web
sr google inotify