Добавление временной метки
Часть раздела Основы путешествия по Terminal на Coddy. Урок 78 из 82.
Задание
ЛегкоДавайте сделаем имя папки backup уникальным, добавив временную метку. Таким образом, каждая резервная копия будет создавать новую папку, а не перезаписывать предыдущую.
Измените backup.sh следующим образом:
- Сохраните весь существующий код из предыдущего урока
- Замените статическое
backup_dir="backup"на динамическое имя, включающее временную метку - Используйте подстановку команд с командой
date, чтобы создать временную метку в форматеYYYYMMDD_HHMMSS - Папка backup должна называться:
backup_[timestamp]
Команда date со спецификаторами формата создаёт временные метки:
date +%Y%m%d_%H%M%SИспользуйте подстановку команд $(command), чтобы сохранить этот результат в переменной:
timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"Запись многострочного скрипта с одним
echoв каждой строке работает, но есть более короткий способ: документ здесь передаёт всё содержимое вплоть до закрывающего слова непосредственно в файл.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", чтобы создать динамическое имя папки.
Попробуйте сами
cat > backup.sh << 'EOF'
#!/bin/bash
read -p "Enter source directory: " source_dir
echo "Backing up: $source_dir"
backup_dir="backup"
mkdir -p "$backup_dir"
echo "Created backup folder: $backup_dir"
cp "$source_dir"/* "$backup_dir"
echo "Files copied successfully"
EOF
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