#bash #ubuntu #makefile #gnu-make #fuser
#удар #ubuntu #сделать файл #gnu-сделать #Термоблок
Вопрос:
Я пытаюсь удалить папку с именем sim_build
, но не могу, потому что .nfs*
в sim_build
ней (а также во вложенных папках) есть несколько файлов, которые заняты/не закрыты. В настоящее время я нахожу .nfs*
файлы в каталогах вручную с помощью fuser --kill /path_to_nfs/.nfs*
. после удаления всех .nfs*
файлов я удаляю папку с помощью rm -rf sim_build
.
Как вы можете видеть, это слишком громоздко. Как лучше всего автоматизировать это в файле makefile?
любая помощь будет признательна!
Комментарии:
1. Я не уверен, что понимаю, в чем проблема. Просто создайте фальшивую цель без зависимостей и используйте свой сценарий в качестве ее рецепта. Но использование make для этого немного странно. Сценарий bash сделал бы то же самое.
2. файл makefile предназначен не только для этой задачи. На самом деле у меня есть файл makefile, который выполняет совсем другие задачи. Что я сделаю, так это расширю
clean
, чтобы удалить.nfs*
файлы тоже. причина автоматизации в том, что я не знаю, где.nfs*
находятся файлы. каждый раз, когда я запускаю моделирование, создаются некоторые папки с разными именами и.nfs*
файлами.3. В любом случае, здесь нет никакой тайны. Напишите командные строки, которые делают то, что вы хотите, в своей оболочке, затем скопируйте их в рецепт makefile, сделайте отступ с помощью вкладки и замените все
$
на$$
. Выполнено. если это не сработает, опубликуйте созданное вами правило, вырежьте и вставьте неверный вывод и опишите, что не так и чего вы хотели вместо этого, тогда мы сможем помочь.