Existe uma maneira simples de executar automaticamente um comando (Terminal) toda vez que um arquivo é alterado em uma pasta específica?
Isso deve ser possível por meio da linha de comando ou de um aplicativo interno do sistema, sem aplicativos de terceiros.
Alguma ideia?
macos
terminal
command-line
Louis B.
fonte
fonte
Respostas:
Salve uma lista de propriedades como esta como
~/Library/LaunchAgents/test.plist
:O agente pode ser carregado com
launchctl load ~/Library/LaunchAgents/test.plist
ou efetuando logout e logon novamente. A aplicação de alterações requer descarregar e carregar o plist.A expansão til (
~/
) funciona nos WatchPaths por padrão. EnableGlobbing adiciona expansão curinga e til para ProgramArguments, mas não afeta o Program ou o WatchPaths.Se um arquivo monitorado for modificado dentro de dez segundos a partir da última chamada, uma mensagem como esta será adicionada ao system.log:
Uma maneira de se livrar das mensagens é adicionar algo como
sleep 10
ao final dos scripts. Definir ThrottleInterval para 10 não ajuda.Alterações nas subpastas das pastas monitoradas não são detectadas.
Veja
man launchd
eman launchd.plist
para mais informações.fonte
entr (1) é um utilitário para executar comandos quando os arquivos são alterados. Ele lê uma lista de arquivos no STDIN e usa o kqueue (2) para evitar pesquisas.
Exemplo:
fonte
Você pode usar as Ações da pasta, que permitem executar scripts (Automator) sempre que o conteúdo de uma pasta for alterado. Tanto quanto sei, o Automator possui um modelo que permite criar facilmente uma nova ação de pasta e anexá-la à pasta desejada. E adicionando uma ação "Executar script de shell", você deve obter o efeito desejado.
fonte
As ações da pasta são boas para acionar quando um arquivo é adicionado ou modificado.
No entanto, se sua definição de alteração inclui a exclusão de um arquivo, as ações da Pasta OSX não detectam se um arquivo foi removido.
Para responder à pergunta:
Faça o download das dependências do FileWatcher aqui: https://github.com/eonist/swift-utils
Familiarize-se com a execução rápida na linha de comando: http://krakendev.io/blog/scripting-in-swift
Use este código para assistir a uma pasta.
Código:
fonte
O Automator possui um tipo de fluxo de trabalho chamado "Ação da pasta", que é executado automaticamente quando algo é adicionado a uma pasta. Crie um e use a ação "Executar script do shell".
fonte
Você pode tentar algo assim:
fonte
ls -l
capturar alterações no arquivo.