Usando o inotifywait
Como mencionado, você pode usar inotify-tools
( inotifywait
) para assistir a um diretório específico para mudanças, por exemplo, pelo script abaixo, e subsequentemente definir novos arquivos executáveis recursivamente.
O script usa o inotifywait
-command, que é acionado por eventos específicos, definidos pela -e
-option. Felizmente, o comando pode ser usado em combinação com vários tipos de eventos.
Como você deseja que os arquivos dentro do diretório sejam executáveis, no script, dois eventos são definidos:
-e move
que notará arquivos movidos para o diretório, e
-e create
que notará novos arquivos criados dentro do diretório.
Além disso, as opções:
-m -r
são para fazer o comando rodar indefinidamente ("monitor") e recursivamente no diretório, enquanto:
--format '%w%f'
exibe o diretório (caminho para o arquivo, %w
) mais o nome do arquivo ( %f
) que causou o evento.
Mais sobre opções de inotifywait
podem ser encontradas aqui ou, como sempre, em man inotifywait
O script
#!/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
Como usar
-
Você provavelmente terá que instalar
inotify-tools
primeiro:sudo apt-get install inotify-tools
-
Copie o script em um arquivo vazio, salve-o como
set_executable.sh
-
Na cabeça do script, defina o caminho para a pasta de destino:
# change the directory below into the targeted directory DIR="/home/jacob/Bureaublad/test123"
... e teste-execute o script a partir de um terminal.
- Se tudo funcionar bem, adicione o script a Startup Applications: Dash > Aplicativos de inicialização > Adicionar.
Nota
Observe que notifywait
age em alterações (eventos). Isso implica que os arquivos que foram adicionados ou criados antes do script executado não serão afetados. Também não irá reescrever os arquivos executáveis se você os definir de forma manual e deliberada, não , para serem executáveis, enquanto estiverem dentro do diretório de destino.