ديف أوبس

إعادة توجيه المخرجات في سكربتات الصدفة

إعادة توجيه المخرجات باستخدام here scripts في سكربات الصدفة (Shell Scripts)

تعتبر لغة السكربتات في بيئة الصدفة (Shell) من الأدوات القوية التي تسمح للمستخدمين بإتمام مهام معقدة عبر كتابة سلاسل من الأوامر التي يتم تنفيذها بشكل متتابع. أحد المفاهيم الأساسية التي يجب أن يعرفها أي شخص يعمل مع سكربات الصدفة هو “إعادة توجيه المخرجات” (Output Redirection)، الذي يسمح بتوجيه ناتج الأوامر إلى ملفات أو إلى مدخلات أخرى.

إحدى الطرق المتقدمة لإعادة توجيه المخرجات هي استخدام مفهوم “here scripts” أو “here documents”، والذي يوفر وسيلة مرنة وفعالة لتوجيه المدخلات إلى السكربتات أو الأوامر المختلفة داخل سكربات الصدفة.

في هذا المقال، سنتناول بشكل مفصل كيفية استخدام إعادة توجيه المخرجات عبر “here scripts”، وكيف يمكن استغلال هذه التقنية لتحقيق أقصى استفادة منها في البيئات البرمجية المختلفة.

1. مفهوم إعادة توجيه المخرجات في الصدفة (Shell)

قبل التطرق إلى “here scripts”، من المهم أن نفهم أساسيات إعادة توجيه المخرجات في بيئة الصدفة. بشكل عام، يمكننا إعادة توجيه المخرجات إلى ملفات أو مدخلات أخرى باستخدام الرموز المخصصة لذلك في اللغة مثل:

  • >: إعادة توجيه المخرجات إلى ملف، مع استبدال محتويات الملف إن كان موجودًا.

  • >>: إضافة المخرجات إلى ملف موجود دون استبدال محتوياته.

  • <: إعادة توجيه المدخلات من ملف إلى أمر.

  • 2>: إعادة توجيه مخرجات الأخطاء إلى ملف.

على الرغم من أن هذه الأوامر تساعد في إعادة توجيه المخرجات بشكل أساسي، إلا أن هناك سيناريوهات حيث نحتاج إلى طريقة أكثر مرونة للتعامل مع البيانات الموجهة، وهذا هو المكان الذي يصبح فيه "here scripts" مفيدًا.

2. ما هو الـ Here Script أو Here Document؟

"Here script" أو "Here document" هو طريقة لتمرير نص متعدد الأسطر إلى أمر في سكربت الصدفة. يتم استخدامه بشكل أساسي لإدخال نص إلى أمر أو سكربت يتوقع مدخلات نصية، ويتيح لنا تقديم هذه المدخلات بشكل أكثر تنظيماً.

3. التكوين الأساسي لـ Here Script

التركيب الأساسي لاستخدام here script هو كما يلي:

bash
command <<EOF EOF

هنا، command هو الأمر الذي سيأخذ المدخلات من here document، بينما EOF هو العلامة التي تحدد بداية ونهاية المدخلات الموجهة.

شرح هذا المثال:

  • command: هو أي أمر تريد توجيه مدخلات نصية إليه.

  • <: يحدد بداية النص الذي سيتم تمريره إلى الأمر.

  • EOF: هو اسم التسمية التي يمكن أن تكون أي اسم تختاره لتحديد نهاية النص.

  • : هو النص الفعلي الذي يتم تمريره إلى الأمر.

من الممكن استخدام أي اسم بديل لـ EOF، مثل END أو INPUT، بشرط أن تكون متسقة في البداية والنهاية.

4. كيفية استخدام Here Scripts في السكربتات

لنأخذ مثالًا عمليًا يوضح كيف يمكن استخدام here script في السكربتات:

مثال 1: كتابة نص في ملف باستخدام cat

bash
#!/bin/bash cat <<EOF > myfile.txt This is a test file. This file is created using here script. EOF

في هذا المثال، يقوم الأمر cat بإنشاء ملف myfile.txt ويكتب فيه النص المحدد بين EOF في الملف.

مثال 2: استخدام here script مع أمر grep

bash
#!/bin/bash grep "error" <<EOF This is a normal log entry. This is another log entry. Error: Something went wrong. EOF

في هذا المثال، يقوم أمر grep بالبحث عن السلسلة "error" في النص الذي تم تمريره باستخدام here script ويعرض السطر الذي يحتوي على كلمة "Error".

5. استخدام Here Scripts مع الأوامر التي تتطلب إدخال متعدد الأسطر

في بعض الأحيان، تحتاج الأوامر إلى مدخلات متعددة الأسطر، وفي هذه الحالة، يمكن لـ here script تسهيل العملية بشكل كبير. فبدلاً من استخدام سلسلة من المدخلات اليدوية أو التفاعل مع المستخدم، يمكننا توجيه النص مباشرة إلى الأمر.

مثال 3: تمرير استعلامات SQL إلى قاعدة بيانات باستخدام mysql

bash
#!/bin/bash mysql -u user -p password database <<EOF SELECT * FROM users; SELECT * FROM orders; EOF

هنا، نقوم بتمرير استعلامات SQL متعددة إلى أمر mysql باستخدام here script.

6. الاستفادة من إعادة توجيه المخرجات في بيئة متعددة العمليات

من المفيد جدًا في بعض الأحيان استخدام "here scripts" مع العمليات متعددة الخطوات داخل السكربت. هذا يمكن أن يكون مفيدًا في الحالات التي تحتاج فيها إلى معالجة بيانات معقدة أو تمرير مخرجات متعددة الأوامر إلى ملف واحد أو إلى عمليات أخرى.

مثال 4: استخدام here script مع عمليات معقدة

bash
#!/bin/bash command1 | command2 <<EOF Input data for command1 Input data for command2 EOF

في هذا المثال، يتم توجيه المدخلات إلى الأوامر command1 و command2 باستخدام here script، ما يسمح بمرونة أكبر في التعامل مع العمليات المتعددة.

7. كيفية التعامل مع المدخلات الكبيرة باستخدام Here Scripts

أحد الاستخدامات المفيدة لـ here scripts هو القدرة على التعامل مع المدخلات الكبيرة أو المعقدة. بدلاً من كتابة كل المدخلات يدويًا في السكربت أو داخل ملف نصي خارجي، يمكن إدراج المدخلات مباشرة في السكربت باستخدام "here document"، مما يبسط بشكل كبير عملية التعامل مع المدخلات المعقدة.

8. التعامل مع متغيرات داخل Here Scripts

يمكنك استخدام المتغيرات داخل here scripts، ولكن يجب أن تكون حذرًا، حيث أن here scripts تفسر المتغيرات فقط إذا كنت تستخدم التفسير التفاعلي (نموذج shell) الذي يعتمد على الاقتباسات المتغيرة.

مثال 5: استخدام المتغيرات داخل here script

bash
#!/bin/bash username="john_doe" cat <<EOF Hello, $username! Welcome to the script. EOF

في هذا المثال، سيتم استبدال $username بالقيمة "john_doe" عند تنفيذ السكربت.

9. اختتام: فوائد Here Scripts في سكربات الصدفة

تعتبر "here scripts" من الأدوات القوية في سكربات الصدفة، فهي توفر طريقة مرنة لتنظيم المدخلات متعددة الأسطر وتمريرها إلى الأوامر داخل السكربت. يمكن أن تكون مفيدة في مجموعة متنوعة من التطبيقات مثل التعامل مع المدخلات المعقدة، إعادة توجيه البيانات إلى أوامر معينة، والعمل مع العمليات متعددة الخطوات.