Menu
Coddy logo textTech

Добавление временной метки

Часть раздела Основы путешествия по Terminal на Coddy. Урок 78 из 82.

challenge icon

Задание

Легко

Давайте сделаем имя папки backup уникальным, добавив временную метку. Таким образом, каждая резервная копия будет создавать новую папку, а не перезаписывать предыдущую.

Измените backup.sh следующим образом:

  1. Сохраните весь существующий код из предыдущего урока
  2. Замените статическое backup_dir="backup" на динамическое имя, включающее временную метку
  3. Используйте подстановку команд с командой date, чтобы создать временную метку в формате YYYYMMDD_HHMMSS
  4. Папка 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

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Terminal