Executa automaticamente um comando toda vez que um arquivo é alterado

6

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?

    
por ehsanul 01.06.2010 / 02:52

4 respostas

2

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.

    
por 01.06.2010 / 04:16
0

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.

    
por 01.06.2010 / 03:21
0

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.

    
por 01.06.2010 / 09:11
0

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
    
por 25.10.2013 / 11:57

Tags