الأنابيب وإعادة التوجيه (Pipes and Redirections: |, >, >>)

دقائق القراءة: 5

الأنابيب وإعادة التوجيه (Pipes and Redirections: |, >, >>)

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

إذا كنت قد قرأت سابقاً الدخول الأول إلى الطرفية (Terminal): الأوامر الأساسية والمساعدة (man, help)، فهذه المرحلة تمثل خطوة متقدمة وطبيعية بعدها. أما إذا كنت تتعامل بكثافة مع أدوات عرض ومعالجة النصوص (cat, nano, vim, less, tail) أو تبحث داخل النظام باستخدام البحث المتقدم في النظام باستخدام (find, locate, grep)، فستجد أن الأنابيب وإعادة التوجيه هي الرابط العملي الذي يجعل هذه الأدوات تعمل معاً بكفاءة عالية.

ما المقصود بإعادة التوجيه والأنابيب في لينكس؟

كل أمر في لينكس يتعامل عادة مع ثلاثة تدفقات أساسية: الإدخال القياسي، والإخراج القياسي، وإخراج الأخطاء. بشكل افتراضي، يقرأ الأمر المدخلات من لوحة المفاتيح ويعرض النتائج على الشاشة. لكن بفضل إعادة التوجيه يمكنك تغيير هذا السلوك، كأن تحفظ الإخراج في ملف بدلاً من الشاشة.

أما الأنابيب | فتنقل ناتج أمر ما مباشرة إلى أمر آخر باعتباره مدخلاً له. هذا يعني أنك تستطيع بناء سلسلة معالجة متكاملة دون إنشاء ملفات مؤقتة أو تكرار الخطوات يدوياً.

فهم العامل > لحفظ الإخراج داخل ملف

العامل > يستخدم لإرسال الإخراج القياسي إلى ملف. إذا لم يكن الملف موجوداً فسيتم إنشاؤه، وإذا كان موجوداً فسيتم استبدال محتواه بالكامل. لذلك فهو مناسب عندما تريد إنشاء ملف جديد أو إعادة كتابة ملف موجود من الصفر.

مثلاً، إذا أردت حفظ قائمة الملفات الحالية داخل ملف نصي بدلاً من عرضها على الشاشة، يمكنك استخدام الأمر التالي:

ls > files.txt

بعد تنفيذ الأمر، سيحتوي الملف files.txt على نتائج الأمر ls. هذه الطريقة مفيدة جداً عند إنشاء تقارير سريعة أو تخزين نتائج الأوامر للمراجعة لاحقاً.

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

أمثلة عملية على >

  • حفظ اسم المستخدم الحالي داخل ملف: whoami > user.txt
  • تخزين المسار الحالي: pwd > path.txt
  • حفظ قائمة مفصلة للملفات: ls -l > details.txt

فهم العامل >> لإلحاق البيانات دون حذف السابق

العامل >> يشبه > من حيث توجيه الإخراج إلى ملف، لكنه لا يستبدل المحتوى الموجود. بدلاً من ذلك، يضيف الناتج الجديد في نهاية الملف. هذا يجعله مثالياً لبناء السجلات النصية أو تجميع نتائج متعددة في ملف واحد.

مثلاً، إذا كنت تريد إضافة تاريخ ووقت التنفيذ في نهاية ملف تقرير، يمكنك استخدام:

date >> report.txt

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

متى أستخدم > ومتى أستخدم >>؟

  1. استخدم > إذا كنت تريد ملفاً جديداً أو تريد استبدال المحتوى بالكامل.
  2. استخدم >> إذا كنت تريد الاحتفاظ بالمحتوى السابق وإضافة بيانات جديدة في النهاية.
  3. في سجلات العمل أو التقارير التراكمية، يكون >> غالباً هو الخيار الأكثر أماناً.

ما هي الأنابيب | ولماذا تعد من أقوى أدوات الطرفية؟

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

مثلاً، إذا أردت عرض الملفات التي تحتوي على كلمة معينة داخل مخرجات أمر ما، يمكن تمرير الناتج إلى grep لتصفية السطور المطلوبة فقط.

ls -l | grep ".txt"

في هذا المثال، يقوم ls -l بإخراج القائمة المفصلة، ثم يستقبل grep هذا الناتج ويعرض فقط السطور التي تحتوي على .txt.

أمثلة مفيدة على الأنابيب

  • قراءة ملف ثم البحث عن كلمة داخله: cat notes.txt | grep "error"
  • عرض آخر السطور من سجل معين: dmesg | tail
  • عدّ عدد النتائج المطابقة: ls | wc -l

هذه الأمثلة تكشف كيف يمكن دمج الأدوات الأساسية معاً. وإذا كنت تعمل باستمرار على التعامل مع الملفات والمجلدات (Navigation, CRUD Operations) فستساعدك الأنابيب على تصفية النتائج وتحويلها إلى بيانات قابلة للاستخدام فوراً.

دمج الأنابيب مع إعادة التوجيه في سيناريو عملي

القوة الحقيقية تظهر عند الجمع بين | و> أو >>. لنفترض أنك تريد البحث عن الملفات النصية ثم حفظ النتائج داخل ملف تقرير. بدلاً من تنفيذ الخطوات يدوياً، يمكنك بناء سلسلة أوامر واحدة.

find . -type f | grep ".log" > log-files.txt

هنا يقوم find بإيجاد الملفات، ثم يقوم grep بتصفية النتائج، وفي النهاية يتم حفظ القائمة في الملف. هذا النوع من التركيب يعكس الفلسفة التي تقوم عليها أدوات لينكس كما شرحنا سابقاً في مقدمة إلى عالم لينكس: التاريخ، الفلسفة، وفهم النواة (Kernel).

أخطاء شائعة يجب تجنبها

  • استخدام > بدلاً من >> مما يؤدي إلى حذف محتوى ملف مهم.
  • الاعتقاد أن الأنبوب يحفظ الناتج تلقائياً، بينما هو فقط ينقل الناتج بين الأوامر.
  • تمرير مخرجات غير مناسبة إلى أمر آخر لا يتوقع هذا النوع من البيانات.
  • نسيان مراجعة صلاحيات الكتابة عند التوجيه إلى ملفات داخل مجلدات النظام، خصوصاً ضمن مسارات مرتبطة بما شرحناه في هيكلية ملفات لينكس (Filesystem Hierarchy Standard – FHS).

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

خلاصة عملية

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

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

14 comments

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *