Zaman Damgası Ekleme
Coddy'nin Terminal Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 78 / 82.
Görev
KolayZaman 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):
- Önceki dersin betiğindeki diğer tüm satırları olduğu gibi bırak
- Sabit
backup_dir="backup"değerini, zaman damgası içeren dinamik bir adla değiştir YYYYMMDD_HHMMSSbiçiminde bir zaman damgası oluşturmak içindatekomutunu komut ikamesiyle kullan- 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%SBu çı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
echokullanarak ç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$variablesdeğ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_dirdeğerini tanımlamadan öncetimestamp=$(date +%Y%m%d_%H%M%S)satırını ekle, ardından dinamik klasör adını oluşturmak içinbackup_dir="backup_$timestamp"kullan.
Kendin dene
echo 'cp "$source_dir"/* "$backup_dir"' >> backup.sh
echo 'echo "Files copied successfully"' >> backup.sh
echo "documents" | bash backup.sh
ls backupTemel Bilgiler bölümündeki tüm dersler
4Dizinler
Bir Dizin OluşturBir Dizin KopyalaBir Dizin Taşı ve Yeniden AdlandırBir Dizin SilÖzet - Dizin İşlemleri7Dosya İçeriği
Head ve TailKelime SayısıSort KomutuUnik KomutuGrep TemelleriBayraklarla GrepÖzet - Metin Dedektifi10Günlük Analizörü Projesi
Proje Genel BakışıGünlük Dosyasını Görüntüleme2Navigasyon
Çalışma Dizini'ni YazdırDosyaları ListeleDizin DeğiştirMutlak ve Göreli YollarEv ve Kök DizinÖzet - Yolunu Bul8Yönlendirme
Standart ÇıktıDosyaya Üzerine YazmaDosyaya EklemeStandart GirdiStandart HataÖzet - Günlük Oluşturucu11İzinler
İzinleri Anlamaİzinleri OkumaChmod RakamlarlaChmod SembollerleDosya SahipliğiÖzet - Kilitle14Yedekleme Betiği Projesi
Proje Genel BakışıKaynak Yolu Alma3Dosyalar
Bir Dosya OluşturBir Dosya OkuBir Dosya KopyalaBir Dosyayı Taşı ve Yeniden AdlandırBir Dosya SilÖzet - Dosya İşlemleri6Joker Karakterler ve Desenler
Yıldız Joker KarakteriSoru İşareti Joker KarakteriKöşeli Parantez JokerleriJoker Karakterleri BirleştirmeÖzet - Seçici İşlemler9Borulama
Boru Nedir?İki Komutu ZincirlemeBirden Fazla Komutu ZincirlemeGrep ile BoruÖzet - Veri Boru HattıKendi başına pratik yap: Terminal playground