Копия Bash к другому каталогу, не работающему

Во-первых, я признаю, что я плохо знаком с основанными на UNIX системами, я в настоящее время учусь в колледже.

Я пытаюсь создать функцию, которая автоматизирует резервное копирование существующего файла к существующему каталогу. Однако я возвращаюсь сообщение в CLI, который заключает в кавычки:

cp: cannot create regular file '../Logs/bashmenu.22:52:28-06/12/2016.sh': No such file or directory

Я сделал изрядное количество самоисследования, но я не могу найти рабочее решение своей проблемы.

Путь к каталогу в файл, который содержит функцию, та, которой я хочу создать резервную копию:

/Home/Scripts/bashmenu.sh

Путь к каталогу к местоположению, до которого я хочу отступить:

/Home/Logs/TARGET

При резервном копировании файла я хотел бы, чтобы это было штампованной датой. Таким образом, я использовал пару переменных для получения соглашения о присвоении имен для файла при резервном копировании. Я полагаю, что это - то, что вызывает проблему. Я не знаю, вызывает ли это проблему, но файл и каталоги, это - все на USB, я просто создал подобный путь к каталогу для него.

Вот часть моего сценария, части, которым я верю, имеют значение:

#### #!/bin/bash
fullname=`basename "$0"`
now=`date +"%H:%M:%S-%d/%m/%Y"`;
backupname="${fullname%.*}"".""$now.sh"
cp -v $fullname ../Logs/$backupname
4
задан 7 December 2016 в 02:12

1 ответ

Символ разделителя пути / строго запрещается в именах файлов (вообразите ад, который был бы развязан, если бы это не было так!)

Иначе... обратные галочки для замены команды отчасти удерживаются от использования, таким образом, я изменил ее... И скорректированный Ваше заключение в кавычки немного

Если Вы действительно хотите, чтобы сценарий скопировал себя в цель...

#!/bin/bash
fullname=$(basename "$0")
now=$(date +"%H:%M:%S-%d.%m.%Y")
backupname="${fullname%.*}"."$now.sh"
cp -v "$fullname" ../Logs/"$backupname"

Таким образом, функция могла быть чем-то как

backup() {
fullname=$(basename "$1")
now=$(date +"%H:%M:%S-%d.%m.%Y")
backupname="${fullname%.*}"."$now.sh"
cp -v "$fullname" /path/to/wherever/"$backupname"
}
5
ответ дан 1 December 2019 в 09:32

Другие вопросы по тегам:

Похожие вопросы: