Menu
CoddyTech

Zaman Damgası Ekleme

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

challenge icon

Görev

Kolay

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

backup.sh dosyasını, güncellenmiş betiğin tamamını içerecek şekilde yeniden yaz (önceki dersin sürümünü görmek için cat backup.sh komutunu çalıştır):

  1. Önceki dersin betiğindeki diğer tüm satırları olduğu gibi bırak
  2. Sabit backup_dir="backup" değerini, zaman damgası içeren dinamik bir adla değiştir
  3. YYYYMMDD_HHMMSS biçiminde bir zaman damgası oluşturmak için date komutunu komut ikamesiyle kullan
  4. Yedekleme klasörünün adı şu olmalı: backup_[timestamp]

Biçim belirteçleriyle 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 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 betik yazmak işe yarar, ancak daha kısa bir yol var: *here document* (burada-belgesi), 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 değerlerinin genişletilmesini önler; betiğin kendisi bu değişkenleri kullanıyorsa istediğin de budur.

Girdi olarak documents kullanarak betiği çalıştır (echo "documents" | bash backup.sh). Çıktın şöyle 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 değerini tanımlamadan ö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
echo 'cp "$source_dir"/* "$backup_dir"' >> backup.sh
echo 'echo "Files copied successfully"' >> backup.sh
echo "documents" | bash backup.sh
ls backup

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Terminal playground