Eu estou escrevendo vários .gv arquivos ( graphviz ) no mesmo diretório e deseja criar um arquivo png com neato imediatamente quando salvei um deles. Eu estou no macOS 10.12.6, com zsh como meu shell padrão e eu instalei entr de http://entrproject.org/ para monitorar alterações de arquivos. Eu tentei seguir o comando sem qualquer sorte
$ echo $0
-zsh
$ ls *.gv | entr 'F="/_";neato -Tpng "$F" -o"${F/%\.gv/.png}"'
entr: exec F="/_";neato -Tpng "$F" -o"${F/%\.gv/.png}": No such file or directory
Trabalhos seguintes
Impressão simples do último arquivo modificado
$ ls *.gv | entr echo /_ # Press <Space> to manually trigger event to see last changed file /Users/hotschke/complete.gvUsando o mesmo nome de saída para todos os arquivos:
$ ls *.gv | entr neato -Tpng /_ -oConstantname.pngSubstitua .gv por .png
$ F="/Users/hotschke/complete.gv";neato -Tpng "$F" -o"${F/%\.gv/.png}"
Observe o argumento especial /_ do entr
O especial
/_argumento (algo análogo a$_em Perl) fornece uma maneira rápida de se referir ao primeiro arquivo que foi alterado. Quando um único arquivo é listado, essa é uma maneira prática de evitar digitar um nome de caminho duas vezes:
Seria ótimo ter várias respostas usando diferentes ferramentas (por exemplo, vigia, watchdog, fswatch, entr, launchd (somente para mac); veja também a discussão https://stackoverflow.com/q/1515730/ )
inotify tag ...
inotifywait -m, que produz nós tocados, em vez deentrque parece consumir uma lista de nós para monitorar. Você pode então usarsed(ou similar) para produzir um comando para executar.