التعامل مع الملفات والنصوص
التعامل مع الملفات والنصوص
بيئة الطرفية (Terminal) قائمة على النصوص بالدرجة الأولى. ملفات الإعداد، وسجلات التطبيقات، والسكريبتات، وخطوط معالجة البيانات — كلها نصوص عادية مخزّنة على القرص. مهندس DevOps لا يُتقن قراءة هذه الملفات وفحصها ونسخها ونقلها ومعالجتها من الطرفية سيجد نفسه محاصراً في كل مهمة تشغيلية. يُعلّمك هذا الدرس الأدوات الأساسية — cat وless وhead/tail وcp وmv وrm وtouch وfile — بعقلية الإنتاج التي تُميّز المحترفين.
قراءة محتوى الملفات
هناك أربعة أدوات رئيسية لقراءة الملفات، لكل منها حالة استخدام مناسبة.
cat (اختصار concatenate) يُخرج محتوى الملف كاملاً على الشاشة. مناسب للملفات الصغيرة والفحص السريع وتمرير المحتوى إلى أدوات أخرى عبر الأنابيب. تجنّبه مع الملفات الكبيرة — ستمتلئ ذاكرة الطرفية وتفقد السياق.
less هو أداة التصفّح الصفحي: تعرض شاشة واحدة في كل مرة، وتتيح التمرير للأعلى والأسفل، ولا تحمّل الملف كاملاً في الذاكرة. هي الأداة الصحيحة لأي ملف لا تعلم حجمه مسبقاً. أهم اختصارات لوحة المفاتيح: j/k أو الأسهم للتمرير، Space/b للصفحة التالية/السابقة، /نمط للبحث للأمام، n/N للتنقل بين النتائج، q للخروج، F لمتابعة المحتوى الجديد.
less على cat لأي ملف سجل أو إعداد لم تراه من قبل. على خادم إنتاج مشغول، قد يمرّر cat /var/log/nginx/access.log آلاف الأسطر أمامك في ثانية واحدة. less يبقيك في السيطرة.
head وtail يقرآن بداية أو نهاية الملف. كلاهما يعرض 10 أسطر افتراضياً؛ الخيار -n N يغيّر العدد.
head -n 20 config.yaml— عرض أول 20 سطراً (مفيد للتحقق من رأس الملف أو المخطط)tail -n 50 /var/log/app.log— عرض آخر 50 سطراً (الأحداث الأحدث)tail -f /var/log/nginx/error.log— وضع المتابعة؛ الأسطر الجديدة تظهر فور كتابتها في الملف — هذا هو الأسلوب الأهم لمراقبة السجلات في الإنتاجtail -F(حرف كبير) تتابع بالاسم وتتعامل مع تدوير السجلات (log rotation)، مما يجعلها أكثر موثوقية في جلسات العمل الطويلة
فحص نوع الملف والبيانات الوصفية
file تفحص المحتوى الفعلي للملف (التوقيع السحري، الترميز، سطر shebang) وتُخبرك بما هو عليه حقاً — بغضّ النظر عن الامتداد. هذا ضروري باستمرار في DevOps: تستقبل ملفاً ثنائياً بامتداد .log، أو ملف gzip باسم backup، أو سكريبت بلا امتداد.
cat أبداً مع الملفات الثنائية على طرفيتك. الطرفيات تفسّر تسلسلات الإفلات الموجودة في بيانات الملف. ملف ثنائي مُصمَّم بخبث يمكنه إعادة تعيين لوحة المفاتيح، أو تغيير عنوان الطرفية، أو في الطرفيات القديمة تشغيل أوامر. دائماً شغّل file على أي ملف مجهول قبل قراءته.
النسخ والنقل وإعادة التسمية
cp ينسخ الملفات أو المجلدات. المصدر يبقى دون تغيير.
cp file dest— نسخ ملف إلى وجهةcp -r dir/ backup/— نسخ مجلد بشكل متكررcp -p— الحفاظ على الصلاحيات والملكية والطوابع الزمنية (ضروري عند نسخ ملفات الإعداد)cp -a— وضع الأرشفة: متكرر + حفظ كل شيء (الخيار الافتراضي الصحيح للنسخ الاحتياطية)
mv ينقل أو يُعيد التسمية. لا توجد نسخة — مسار المصدر يختفي. على نفس نظام الملفات يكون العملية فورية (مجرد تحديث للبيانات الوصفية)؛ عبر أنظمة ملفات مختلفة يقوم بنسخ ثم حذف.
rm يحذف نهائياً — لا توجد سلة محذوفات في Linux. الخيارات الشائعة: -r لحذف المجلدات بشكل متكرر، -f لتجاهل أخطاء "الملف غير موجود". التركيبة rm -rf قوية جداً وهي المسبب الشائع لكوارث الإنتاج.
rm -rf. مسافة في المكان الخطأ أو متغير فارغ في سكريبت يمكنه مسح نظام ملفات كامل. العادات الآمنة: تحقق دائماً من المسار بـls أولاً؛ استخدم rm -ri (التفاعلي) مع المجلدات غير المألوفة؛ لا تشغّل rm -rf /some/path/$VAR ما لم تتأكد أن $VAR لا يمكن أن يكون فارغاً. Google خسرت بيانات بهذه الطريقة. وكذلك كل مزود سحابي رئيسي مرة على الأقل.
touch ينشئ ملفاً فارغاً إذا لم يكن موجوداً، أو يُحدّث طوابع الوصول والتعديل إذا كان موجوداً. في DevOps يُستخدم بكثرة لإنشاء ملفات القفل، وتشغيل أدوات مراقبة الملفات، وإنشاء ملفات حجز مكان في مستودعات Git.
تدفقات النصوص ودمج الأدوات
القوة الحقيقية لهذه الأوامر تظهر عند تركيبها عبر الأنابيب (pipes). مهندس الإنتاج نادراً ما يقرأ ملف سجل كاملاً — بل يُصفيه ويبحث فيه ويلخصه أثناء العمل. الأدوات في هذا الدرس هي اللبنات الأساسية.
cp -p original original.bak. هذه العادة الواحدة أنقذت مهندسين لا يُحصون من الحاجة إلى الاستعادة من نسخة احتياطية كاملة في الساعة الثانية صباحاً. كثير من الفرق تضع ملفات الإعداد أيضاً تحت إدارة النسخ (Git) حتى يكون كل تغيير قابلاً للمراجعة — هذا هو المعيار الاحترافي الذي يُغطيه درس Git.
ما تعلمته الآن
أصبح بإمكانك قراءة أي ملف بأمان (less، head، tail -F)، وتحديد ما هو الملف فعلاً (file)، ونسخ ملفات الإعداد والاحتفاظ بنسخة احتياطية دون تدمير الأصل (cp -p)، وإعادة تسمية الملفات ونقلها بشكل آمن (mv)، وحذف الملفات بتعمّد وحذر (rm). هذه الأدوات الأساسية تقبع خلف كل سكريبت shell، وكل خط أتمتة، وكل استجابة لحادثة إنتاج ستعمل عليها.