Во-первых, я признаю, что я плохо знаком с основанными на 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
Символ разделителя пути /
строго запрещается в именах файлов (вообразите ад, который был бы развязан, если бы это не было так!)
Иначе... обратные галочки для замены команды отчасти удерживаются от использования, таким образом, я изменил ее... И скорректированный Ваше заключение в кавычки немного
Если Вы действительно хотите, чтобы сценарий скопировал себя в цель...
#!/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"
}