إضافة طابع زمني
جزء من قسم الأساسيات في رحلة Terminal على Coddy. الدرس 78 من 82.
التحدي
سهللنجعل اسم مجلد النسخة الاحتياطية فريدًا بإضافة طابع زمني. بهذه الطريقة، تنشئ كل نسخة احتياطية مجلدًا جديدًا بدلًا من الكتابة فوق المجلد السابق.
أعِد كتابة backup.sh بحيث يحتوي على السكربت الكامل والمحدَّث (شغّل cat backup.sh للاطلاع على إصدار الدرس السابق):
- أبقِ كل سطر آخر من سكربت الدرس السابق كما هو
- استبدل
backup_dir="backup"الثابت باسم ديناميكي يتضمن طابعًا زمنيًا - استخدم استبدال الأوامر مع الأمر
dateلإنشاء طابع زمني بالتنسيقYYYYMMDD_HHMMSS - يجب أن يكون اسم مجلد النسخة الاحتياطية:
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جميع دروس الأساسيات
2التنقل
عرض مسار المجلد الحاليعرض الملفاتتغيير المجلدالمسارات المطلقة مقابل المسارات النسبيةمجلد المنزل ومجلد الجذرخلاصة - حدد مسارك8إعادة التوجيه
المخرجات القياسيةالكتابة فوق ملفالإضافة إلى ملفالمدخلات القياسيةالخطأ القياسيمراجعة - بناء سجل الأحداث11الأذونات
فهم الأذوناتقراءة الأذوناتChmod باستخدام الأرقامChmod باستخدام الرموزملكية الملفاتملخص - إحكام الحماية14مشروع سكربت النسخ الاحتياطي
نظرة عامة على المشروعالحصول على مسار المصدرتدرّب بنفسك: Playground لـ Terminal