Menu
CoddyTech

إضافة طابع زمني

جزء من قسم الأساسيات في رحلة Terminal على Coddy. الدرس 78 من 82.

challenge icon

التحدي

سهل

لنجعل اسم مجلد النسخة الاحتياطية فريدًا بإضافة طابع زمني. بهذه الطريقة، تنشئ كل نسخة احتياطية مجلدًا جديدًا بدلًا من الكتابة فوق المجلد السابق.

أعِد كتابة backup.sh بحيث يحتوي على السكربت الكامل والمحدَّث (شغّل cat backup.sh للاطلاع على إصدار الدرس السابق):

  1. أبقِ كل سطر آخر من سكربت الدرس السابق كما هو
  2. استبدل backup_dir="backup" الثابت باسم ديناميكي يتضمن طابعًا زمنيًا
  3. استخدم استبدال الأوامر مع الأمر date لإنشاء طابع زمني بالتنسيق YYYYMMDD_HHMMSS
  4. يجب أن يكون اسم مجلد النسخة الاحتياطية: backup_[timestamp]

ينشئ الأمر date طوابع زمنية باستخدام محددات التنسيق:

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

استخدم استبدال الأوامر $(command) لالتقاط هذا الناتج في متغير:

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

تنجح كتابة سكربت متعدد الأسطر باستخدام echo واحد لكل سطر، لكن توجد طريقة أقصر: يمرّر المستند المضمّن كل شيء حتى الكلمة الختامية مباشرةً إلى الملف.

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

تحافظ علامات الاقتباس حول 'EOF' على عدم توسيع $variables أثناء كتابة الملف، وهذا ما تريده عندما يستخدمها السكربت نفسه.

شغّل السكربت مع documents كمدخل (echo "documents" | bash backup.sh). ينبغي أن يبدو الناتج كما يلي:

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

سيختلف الطابع الزمني في ناتجك بحسب التاريخ والوقت الحاليين.

تلميح: أضف timestamp=$(date +%Y%m%d_%H%M%S) قبل تعريف backup_dir، ثم استخدم backup_dir="backup_$timestamp" لإنشاء اسم المجلد الديناميكي.

جرّب بنفسك

الطرفية
echo 'cp "$source_dir"/* "$backup_dir"' >> backup.sh
echo 'echo "Files copied successfully"' >> backup.sh
echo "documents" | bash backup.sh
ls backup

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ Terminal