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

Yedek klasörünün adını bir zaman damgası ekleyerek benzersiz hâle 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" değerini, zaman damgası içeren dinamik bir adla değiştir
  3. date komutuyla komut ikamesini kullanarak YYYYMMDD_HHMMSS biçiminde bir zaman damgası oluştur
  4. Yedek klasörünün adı şu şekilde olmalıdır: backup_[timestamp]

Biçim belirleyicileriyle birlikte kullanılan date komutu zaman damgaları oluşturur:

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

Bu çıktıyı bir değişkende yakalamak için $(command) komut ikamesini 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 betik yazmak işe yarar, ancak daha kısa bir yol vardır: 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' çevresindeki tırnaklar, dosya yazılırken $variables ifadesinin genişletilmesini engeller; betiğin kendisi bunları kullandığında istediğin de budur.

Betikni girdi olarak documents ile çalıştır (echo "documents" | bash backup.sh). Çıktın şöyle görünmelidir:

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) satırını 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