Добавление временной метки
Часть раздела Основы путешествия по Terminal на Coddy. Урок 78 из 82.
Задание
ЛегкоДавайте сделаем имя папки резервной копии уникальным, добавив временную метку. Так при каждом создании резервной копии будет создаваться новая папка, а не перезаписываться предыдущая.
Перепишите backup.sh, чтобы в нём содержался полный обновлённый скрипт (выполните cat backup.sh, чтобы посмотреть версию из предыдущего урока):
- Оставьте все остальные строки скрипта из предыдущего урока без изменений
- Замените статическое значение
backup_dir="backup"динамическим именем, включающим временную метку - Используйте подстановку команды с командой
date, чтобы сгенерировать временную метку в форматеYYYYMMDD_HHMMSS - Папка резервной копии должна называться:
backup_[timestamp]
Команда date со спецификаторами формата создаёт временные метки:
date +%Y%m%d_%H%M%SИспользуйте подстановку команды $(command), чтобы сохранить этот вывод в переменной:
timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"Записывать многострочный скрипт, используя по одной команде
echoна строку, можно, но есть способ короче: here-документ передаёт всё содержимое до завершающего слова прямо в файл.cat > script.sh << 'EOF' #!/bin/bash echo "hello" EOFКавычки вокруг
'EOF'не позволяют раскрывать$variablesпри записи файла — именно это и нужно, когда сам скрипт их использует.
Запустите скрипт, передав documents в качестве входных данных (echo "documents" | bash backup.sh). Вывод должен выглядеть так:
Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfullyВременная метка в вашем выводе будет отличаться в зависимости от текущих даты и времени.
Подсказка: Добавьте
timestamp=$(date +%Y%m%d_%H%M%S)перед определениемbackup_dir, затем используйтеbackup_dir="backup_$timestamp", чтобы создать динамическое имя папки.
Попробуйте сами
echo 'cp "$source_dir"/* "$backup_dir"' >> backup.sh
echo 'echo "Files copied successfully"' >> backup.sh
echo "documents" | bash backup.sh
ls backupВсе уроки раздела Основы
4Каталоги
Создать каталогСкопировать каталогПереместить и переименовать каталогУдалить каталогИтог - Операции с каталогами7Содержимое файлов
Head и TailПодсчёт словКоманда sortКоманда uniqОсновы grepGrep с флагамиПовторение - Текстовый детектив10Проект анализатора логов
Обзор проектаПросмотр файла лога2Навигация
Вывод текущей рабочей директорииСписок файловСмена директорииАбсолютные и относительные путиДомашняя и корневая директорииИтог - Найди свой путь8Перенаправление
Стандартный выводПерезапись в файлДописывание в файлСтандартный вводСтандартная ошибкаПовторение - Сборщик логов11Права доступа
Понимание прав доступаЧтение прав доступаChmod с числамиChmod с символамиВладение файламиПовторение - Заблокируйте доступ14Проект скрипта резервного копирования
Обзор проектаПолучение пути к источнику3Файлы
Создать файлПрочитать файлСкопировать файлПереместить и переименовать файлУдалить файлПовторение - Операции с файлами6Символы подстановки и шаблоны
Звёздный символ подстановкиВопросительный символ подстановкиСкобочные символы подстановкиКомбинирование символов подстановкиПовторение - выборочные операции9Каналы
Что такое каналЦепочка двух командЦепочка нескольких командКанал с grepИтог - Конвейер данныхПотренируйтесь самостоятельно: Песочница Terminal