Menu
Coddy logo textTech

Dodawanie znacznika czasu

Część sekcji Podstawy ścieżki Terminal w Coddy. Lekcja 78 z 82.

challenge icon

Wyzwanie

Łatwy

Utwórzmy unikalną nazwę folderu kopii zapasowej, dodając znacznik czasu. Dzięki temu każda kopia zapasowa będzie tworzyć nowy folder zamiast nadpisywać poprzedni.

Zmodyfikuj backup.sh, aby:

  1. Zachować cały istniejący kod z poprzedniej lekcji
  2. Zastąpić statyczne backup_dir="backup" dynamiczną nazwą zawierającą znacznik czasu
  3. Użyć podstawiania polecenia z poleceniem date, aby wygenerować znacznik czasu w formacie YYYYMMDD_HHMMSS
  4. Nazwać folder kopii zapasowej: backup_[timestamp]

Polecenie date ze specyfikatorami formatu tworzy znaczniki czasu:

date +%Y%m%d_%H%M%S

Użyj podstawiania polecenia $(command), aby zapisać ten wynik w zmiennej:

timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"

Zapisanie wielowierszowego skryptu za pomocą jednego echo w każdym wierszu działa, ale istnieje krótszy sposób: dokument here przekazuje do pliku całą zawartość aż do słowa zamykającego.

cat > script.sh << 'EOF'
#!/bin/bash
echo "hello"
EOF

Cudzysłowy wokół 'EOF' zapobiegają rozwinięciu $variables podczas zapisywania pliku, czego właśnie potrzebujesz, gdy skrypt używa tych zmiennych.

Uruchom skrypt, podając documents jako dane wejściowe (echo "documents" | bash backup.sh). Wynik powinien wyglądać tak:

Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfully

Znacznik czasu w wyniku będzie inny, zależnie od aktualnej daty i godziny.

Podpowiedź: Dodaj timestamp=$(date +%Y%m%d_%H%M%S) przed zdefiniowaniem backup_dir, a następnie użyj backup_dir="backup_$timestamp", aby utworzyć dynamiczną nazwę folderu.

Spróbuj swoich sił

Terminal
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

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Terminal