بحث
احتراف أوامر Linux: دليل الأنابيب وإعادة التوجيه (2025)
البرمجة #لينكس #برمجة

احتراف أوامر Linux: دليل الأنابيب وإعادة التوجيه (2025)

منذ 4 ساعات 4 مشاهدة 0 تعليق 3 دقائق قراءة
4 مشاهدة
0 إعجاب
0 تعليق
موثوق 95%

تتيح لك ميزات الأنابيب (Pipes) وإعادة التوجيه (Redirection) في نظام Linux استخدام مخرجات الأوامر بطرق قوية وفعالة للغاية، سواء كنت ترغب في حفظها داخل ملفات أو استخدامها كمدخلات لأوامر أخرى لإنشاء حلول برمجية متطورة.

ما هي التدفقات (Streams)؟

يعتمد Linux، مثل أنظمة التشغيل الأخرى الشبيهة بـ Unix، على مفهوم التدفقات. تمتلك كل عملية ثلاثة تدفقات أساسية:

  • stdin: تدفق الإدخال (غالباً من لوحة المفاتيح).
  • stdout: تدفق الإخراج (غالباً إلى نافذة الطرفية).
  • stderr: تدفق الأخطاء (يكتب أيضاً إلى نافذة الطرفية).

تعمل تدفقات Linux مثل التدفقات في العالم الحقيقي، حيث لها نقطة مصدر (إدخال) ونقطة وجهة (إخراج)، مما يسمح بربط الأوامر البسيطة معاً للعمل بتناغم.

إعادة توجيه التدفقات (Redirection)

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

حفظ المخرجات في ملف

على سبيل المثال، إذا كان الأمر du يولد 1380 سطراً من النص، يمكننا إرسالها إلى ملف باستخدام علامة القوس الأيمن:

du > disk-usage.txt

هذا الأمر يوجه مخرجات stdout إلى ملف يسمى disk-usage.txt، ولن يظهر أي شيء على الشاشة. وإذا كنت ترغب في إضافة النص إلى نهاية ملف موجود بدلاً من استبداله، استخدم قوسين مزدوجين >>.

التعامل مع رسائل الخطأ

عند إعادة توجيه stdout فقط، ستظل رسائل الخطأ (stderr) تظهر على الشاشة. لفصل التدفقات، يمكنك استخدام الأرقام حيث يمثل 1 (stdout) ويمثل 2 (stderr):

wc disk-usage.txt missing-file.txt 1> results.txt 2> error.txt

وإذا أردت توجيه كل من النتائج والأخطاء إلى نفس الملف، استخدم الصيغة التالية:

wc disk-usage.txt missing-file.txt 1> results.txt 2>&1

تجاهل المخرجات تماماً

في بعض الأحيان، قد لا ترغب في تخزين المخرجات أو رؤيتها. هنا يأتي دور جهاز "null"، الذي يستهلك كل ما يرسل إليه بصمت:

rm disk-usage.txt missing-file.txt 1> /dev/null 2>&1

قوة الأنابيب (Piping)

تقوم الأنابيب بإعادة توجيه مخرجات أمر ما (stdout) وإرسالها مباشرة كمدخلات (stdin) لأمر آخر. هذه الميزة تعد من أقوى جوانب سطر الأوامر في Linux.

على سبيل المثال، بدلاً من حفظ مخرجات ls في ملف ثم فتحها، يمكن تمريرها مباشرة إلى less لعرضها بشكل مريح:

ls -R ~ | less

معالجة البيانات عبر سلسلة من الأوامر

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

cat /etc/passwd | awk -F: '{print $1}' | sort

مثال متقدم: تحليل العمليات

يمكن دمج عدة أوامر للحصول على إحصائيات دقيقة. في المثال التالي، نقوم بسرد جميع العمليات، تصفية النتائج للبحث عن "chrome"، ترتيبها، ثم عدّها:

ps -e -o comm | grep chrome | sort | uniq -c

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

الأسئلة الشائعة

الرمز > يقوم بإنشاء ملف جديد أو استبدال محتوى الملف الموجود، بينما الرمز >> يقوم بإضافة المخرجات الجديدة إلى نهاية الملف الحالي دون حذف محتواه السابق.

توجد ثلاثة تدفقات رئيسية: stdin للمدخلات، stdout للمخرجات العادية، و stderr لرسائل الخطأ، وتعمل جميعها كقنوات لنقل البيانات بين العمليات والملفات.

يمكن تجاهل المخرجات بتوجيهها إلى جهاز null باستخدام الأمر > /dev/null، مما يؤدي إلى التخلص من البيانات وعدم عرضها أو حفظها.

التعليقات 0

سجل دخولك لإضافة تعليق

لا توجد تعليقات بعد. كن أول من يعلق!