Você não diz qual Unix você está usando, mas o Linux inotify e há inotify-tools e incron .
Existe uma interface Ruby para inutilizar.
Sempre que faço algumas alterações em um arquivo e salvo, gostaria que um comando fosse executado. Eu posso configurar um script Ruby que possa monitorar o arquivo e executar o comando como eu gostaria, mas me ocorre que deve haver uma maneira simples de fazer isso. Existe? Eu estou no Ubuntu 8.10, para ser um pouco menos vago.
Editar:
incron
foi sugerido e parece ser bom. Mas estou tendo problemas para fazê-lo funcionar (edit: o comando parece não rodar quando eu salvo um arquivo no diretório especificado, ou meu comando está com defeito). Eu instalei o incron e configurei a tabela de incremento do meu usuário usando o incrontab, e adicionei o usuário à lista permitida. Minha situação específica é editar um arquivo TeX. Eu quero o comando para torná-lo como um PDF para executar toda vez que eu editar e salvar o arquivo TeX. Então, essa é a entrada da tabela incron que eu criei:
/home/ehsanul/Documents/latex IN_CLOSE_WRITE echo $@/$# | grep \.tex$ | xargs xelatex
O que estou fazendo de errado?
Você não diz qual Unix você está usando, mas o Linux inotify e há inotify-tools e incron .
Existe uma interface Ruby para inutilizar.
Não diretamente, não (a menos que haja algum tipo de gancho em um sistema de arquivos com o qual eu não esteja familiarizado).
Você edita o arquivo por algum método padrão? Se assim for, seria mais fácil automatizar o comando a partir desse ângulo, em vez de a partir do nível do sistema.
Se você nos contar mais sobre a situação, talvez possamos dar a você melhores respostas.
Se acontecer de você usar o controle de versão (e, se você não o fizer, certamente deveria!), você pode configurar um gancho de confirmação. Basta escolher um programa de controle de versão que permita fazer isso, a maioria faz isso.
Instale inotify-tools .
Para assistir a um único arquivo e executar um comando quando ele é alterado:
inotifywait -m --format %w FILENAME | while read file; do
COMMAND ${file}
done
onde
FILENAME
: nome do arquivo que você deseja assistir COMMAND
: comando que você deseja executar na alteração do arquivo -m
: opção para ouvir indefinidamente inotifywait
pode gerar mais informações do que apenas o nome do arquivo (via --format
), confira man inotifywait
para o que mais ele pode fazer (é uma leitura bastante curta). Além disso, os exemplos no wiki fornecem algumas dicas.
Alguém provavelmente deve incluir esses comandos em um script de conveniência que faça exatamente o que você pediu com
convenience-script FILENAME COMMAND