1

Цель: я пытаюсь создать цель PHONY внутри моего Makefile, чтобы при запуске команды "сделать резервную копию" она переместила все файлы, оканчивающиеся на «~», в указанную папку резервной копии.

Вот мой код в настоящее время, и я объясню проблему после: Синтаксис C++ (Переключить обычный текст)

.PHONY: backup
backup:
@mkdir -p ./backup/include #make folder (don't complain if it already exists)
@mkdir -p ./backup/src #make folder (don't complain if it already exists)
@mv -fu *.h~ ./backup/include #move header file backups into desired folder
@mv -fu *.cpp~ ./backup/src #move source file backups into desired folder

Проблема: Это прекрасно работает, НО ТОЛЬКО если файл " .h ~" и ".cpp ~" уже существует в текущем каталоге Makefile. Я хотел бы, чтобы эта цель перемещала файлы, если это возможно, и просто молчила, если нет файлов для перемещения ..

Сообщение об ошибке: mv: not stat `* .h ~ ': нет такого файла или каталога

* Я нахожусь на Linux (Ubuntu), и поэтому моя оболочка "Bash"

Спасибо за помощь, я застрял на этом всю ночь, пробуя всевозможные команды от операторов if до команды "find". Просто подумал, что я наконец-то попросить помощи

1 ответ1

1

Попробуй это:

.PHONY: backup
backup:
@mkdir -p ./backup/include #make folder (don't complain if it already exists)
@mkdir -p ./backup/src #make folder (don't complain if it already exists)
@mv -fu *.h~ ./backup/include &> /dev/null #move header file backups into desired folder
@mv -fu *.cpp~ ./backup/src &> /dev/null #move source file backups into desired folder

&>/dev/null должен перенаправить весь вывод команды mv в /dev/null , которая просто избавится от него.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .