Menu
Coddy logo textTech

Zaman Damgası Ekleme

Coddy'nin Terminal Journey'sinin Temeller bölümünün bir parçası. Ders 78 / 82.

challenge icon

Görev

Kolay

Zaman damgası ekleyerek yedek klasörünün adını benzersiz hale getirelim. Böylece her yedekleme, öncekinin üzerine yazmak yerine yeni bir klasör oluşturur.

backup.sh dosyasını şu şekilde değiştir:

  1. Önceki dersteki mevcut kodun tamamını koru
  2. Statik backup_dir="backup" ifadesini, zaman damgası içeren dinamik bir adla değiştir
  3. date komutuyla YYYYMMDD_HHMMSS biçiminde bir zaman damgası oluşturmak için komut ikamesini kullan
  4. Yedek klasörünün adı şu şekilde olmalı: backup_[timestamp]

Biçim belirteçleriyle birlikte date komutu zaman damgaları oluşturur:

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

Bu çıktıyı bir değişkende yakalamak için komut ikamesini $(command) kullan:

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

Her satır için bir echo kullanarak çok satırlı bir script yazmak işe yarar, ancak daha kısa bir yol vardır: bir here document, kapanış sözcüğüne kadar olan her şeyi doğrudan dosyaya aktarır.

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

'EOF' etrafındaki tırnaklar, dosya yazılırken $variables ifadesinin genişletilmesini önler; script bunları kendisi kullandığında istediğin davranış budur.

Girdi olarak documents kullanarak scripti çalıştır (echo "documents" | bash backup.sh). Çıktın şu şekilde görünmeli:

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

Çıktındaki zaman damgası, geçerli tarih ve saate bağlı olarak farklı olacaktır.

İpucu: backup_dir tanımlanmadan önce timestamp=$(date +%Y%m%d_%H%M%S) ekle, ardından dinamik klasör adını oluşturmak için backup_dir="backup_$timestamp" kullan.

Kendin dene

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

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Terminal playground