إعادة توجيه المدخلات والمخرجات في أمثلة Linux/Unix
⚡ ملخص ذكي
تُغيّر عملية إعادة التوجيه في أنظمة لينكس ويونكس مكان قراءة الأمر للمدخلات أو إرساله للمخرجات، أو ما يُعرف بالتبديل.ping لوحة المفاتيح والشاشة للملفات أو الأجهزة باستخدام عوامل التشغيل مثل علامة أكبر من، وعلامة أصغر من، وعامل الإلحاق.

تُعد إعادة التوجيه إحدى أهم ميزات... لينكس وواجهة سطر الأوامر في نظام يونكس، لأنها تتيح لك تحديد مكان قراءة الأمر لمدخلاته وإرسال مخرجاته. تشرح هذه الصفحة إعادة توجيه المخرجات والمدخلات والأخطاء مع أمثلة عملية.
ما هو إعادة التوجيه؟
إعادة التوجيه هي ميزة في نظام لينكس تسمح لك بتغيير أجهزة الإدخال والإخراج القياسية عند تنفيذ أمر ما. وهي جزء أساسي من سير العمل لأي نظام. أمر Linux إنها تأخذ مدخلات وتعطي مخرجات.
- جهاز الإدخال القياسي (stdin) هو لوحة المفاتيح.
- جهاز الإخراج القياسي (stdout) هو الشاشة.
باستخدام إعادة التوجيه، يمكن تغيير المدخلات والمخرجات القياسية المذكورة أعلاه.
إعادة توجيه الإخراج
يوضح الرسم البياني أدناه بداية أمثلة إعادة توجيه المخرجات.
يُستخدم الرمز '>' لإعادة توجيه الإخراج (STDOUT).
على سبيل المثال:
ls -al > listings
هنا، يتم توجيه مخرجات الأمر ls -al إلى الملف "listings" بدلاً من شاشتك. توضح لقطة الشاشة أدناه النتيجة.
ملاحظة: استخدم اسم الملف الصحيح عند إعادة توجيه مخرجات الأمر إلى ملف. إذا كان هناك ملف بنفس الاسم موجودًا بالفعل، فسيحذف الأمر المُعاد توجيهه محتوياته ثم يستبدلها.
إذا كنت لا ترغب في استبدال ملف موجود، ولكنك تريد إضافة محتوى إليه، فاستخدم عامل التشغيل '>>'. تُظهر لقطة الشاشة أدناه محتوىً أُضيف باستخدام '>>'.
يمكنك إعادة توجيه المخرجات القياسية ليس فقط إلى الملفات، ولكن أيضًا إلى الأجهزة.
$ cat music.mp3 > /dev/audio
يقرأ الأمر cat ملف الموسيقى.mp3 ويرسل المخرجات إلى /dev/audio، وهو جهاز الصوت. إذا كانت إعدادات الصوت على جهاز الكمبيوتر الخاص بك صحيحة، فسيقوم هذا الأمر بتشغيل ملف الموسيقى.mp3.
إعادة توجيه الإدخال
يوضح الرسم البياني أدناه عملية إعادة توجيه المدخلات.
يُستخدم الرمز '<' لإعادة توجيه الإدخال (STDIN).
مثال: يمكن لبرنامج البريد في نظام لينكس مساعدتك في إرسال رسائل البريد الإلكتروني من الطرفية.
يمكنك كتابة محتوى البريد الإلكتروني باستخدام لوحة المفاتيح، وهي جهاز الإدخال القياسي. ولكن إذا كنت ترغب في إرفاق ملف بالبريد الإلكتروني، فيمكنك استخدام عامل إعادة توجيه الإدخال بالصيغة التالية.
mail -s "Subject" to-address < Filename
تُظهر لقطة الشاشة أدناه أمر البريد الإلكتروني وهو يقرأ ملفًا كمدخل له.
يؤدي هذا إلى إرفاق الملف بالبريد الإلكتروني، ثم يتم إرساله إلى المستلم.
كانت الأمثلة السابقة بسيطة. الآن، انظر إلى بعض تقنيات إعادة التوجيه المتقدمة التي تستخدم مُعرّفات الملفات.
قم بتقديم Descriptأورز (فد)
في أنظمة لينكس ويونكس، كل شيء عبارة عن ملف. الملفات العادية، والمجلدات، وحتى الأجهزة هي ملفات. لكل ملف رقم مرتبط به يسمى واصف الملف (FD).
يوضح الرسم البياني أدناه التدفقات القياسية ومعرّفات الملفات الخاصة بها.
تحتوي شاشتك أيضًا على مُعرّف ملف. عند تنفيذ برنامج، تُرسل المخرجات إلى مُعرّف ملف الشاشة، فتظهر لك مخرجات البرنامج على شاشتك. أما إذا أُرسلت المخرجات إلى مُعرّف ملف الطابعة، فستُطبع مخرجات البرنامج.
إعادة توجيه الخطأ
عندما تقوم بتنفيذ برنامج أو أمر في الطرفية، يتم فتح ثلاثة ملفات دائمًا، وهي المدخلات القياسية والمخرجات القياسية والخطأ القياسي.
توجد هذه الملفات دائمًا عند تشغيل أي برنامج. وكما سبق شرحه، يرتبط بكل ملف منها مُعرِّف ملف.
| قم بتقديم | قم بتقديم Descriptor |
|---|---|
| معيار الإدخال STDIN | 0 |
| معيار الإخراج القياسي | 1 |
| خطأ قياسي STDERR | 2 |
بشكل افتراضي، يتم عرض تدفق الأخطاء على الشاشة. أما إعادة توجيه الأخطاء فتُحوّل مسارها إلى ملف آخر غير الشاشة.
لماذا إعادة توجيه الخطأ؟
تُعد إعادة توجيه الأخطاء إحدى الميزات الشائعة جدًا في أنظمة يونكس ولينكس.
سيعرف مستخدمو يونكس المتمرسون أن العديد من الأوامر تُنتج كميات هائلة من الأخطاء. على سبيل المثال، أثناء البحث عن الملفات، عادةً ما يحصل المستخدم على إذن الأخطاء المرفوضة، والتي عادةً لا تُفيد الشخص الذي يبحث عن ملف مُعين. عند تنفيذ البرامج النصية، غالبًا ما لا ترغب في ظهور رسائل الخطأ في مُخرجات البرنامج العادية.
الحل هو إعادة توجيه رسائل الخطأ إلى ملف.
مثال 1
$ myprogram 2>errorsfile
تُظهر لقطة الشاشة أدناه هذا الأمر في الطرفية.
في المثال أعلاه، نقوم بتنفيذ برنامج باسم myprogram. مُعرِّف ملف الخطأ القياسي هو 2. باستخدام "2>"، نعيد توجيه مخرجات الخطأ إلى ملف باسم "errorsfile". وبالتالي، لا تمتلئ مخرجات البرنامج بالأخطاء.
مثال 2
إليك مثال آخر يستخدم عبارة البحث.
find . -name 'my*' 2>error.log
باستخدام أمر البحث، نقوم بالبحث في الدليل الحالي "." عن ملف يبدأ اسمه بـ "my"، ونرسل أي أخطاء إلى ملف error.log.
مثال 3: دعونا ننظر إلى مثال أكثر تعقيداً.
يقوم مسؤولو الخوادم عادةً بإدراج الدلائل وتخزين كل من مخرجات الأخطاء والمخرجات القياسية في ملف، والتي يمكن معالجتها لاحقًا. إليك الأمر.
ls Documents ABC> dirlist 2>&1
يوضح الرسم البياني أدناه التقاط كلا التدفقين في ملف واحد.
هنا:
- 2>&1 يعني أن STDERR يتم إعادة توجيهه إلى نفس الهدف مثل STDOUT (وهو قائمة دليل الملفات).
- يتم توجيه مخرجات الخطأ إلى المخرجات القياسية، والتي بدورها تُعاد توجيهها إلى قائمة مجلدات الملفات. وبالتالي، يتم كتابة كلا التدفقين إلى قائمة مجلدات الملفات.
يوضح الرسم البياني أدناه كيفية ترابط عمليات الإدخال والإخراج وإعادة توجيه الأخطاء.






.png)