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.gv
Usando o mesmo nome de saída para todos os arquivos:
$ ls *.gv | entr neato -Tpng /_ -oConstantname.png
Substitua .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 deentr
que parece consumir uma lista de nós para monitorar. Você pode então usarsed
(ou similar) para produzir um comando para executar.