Я пишу несколько файлов .gv (graphviz) в одном каталоге и хочу создать файл png с neato
сразу, когда я сохраню один из них. Я нахожусь на macOS 10.12.6, с zsh
качестве оболочки по умолчанию, и я установил entr
с http://entrproject.org/ для мониторинга изменений файлов. Я безуспешно пытался выполнить следующую команду
$ 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
Следующие работы
Простая печать последнего измененного файла
$ ls *.gv | entr echo /_ # Press <Space> to manually trigger event to see last changed file /Users/hotschke/complete.gv
Используя одно и то же имя вывода для всех файлов:
$ ls *.gv | entr neato -Tpng /_ -oConstantname.png
Заменить .gv на .png
$ F="/Users/hotschke/complete.gv";neato -Tpng "$F" -o"${F/%\.gv/.png}"
Обратите внимание на специальный аргумент /_
entr
Специальный аргумент
/_
(в некоторой степени аналогичный$_
в Perl) обеспечивает быстрый способ обращения к первому измененному файлу. Если указан один файл, это удобный способ избежать повторного ввода пути:
Было бы здорово получить несколько ответов с использованием разных инструментов (например, watchman, watchdog, fswatch, entr, launchd (только для Mac); см. Также обсуждение https://stackoverflow.com/q/1515730/)