English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
معظم أوامر نظام UNIX تأخذ المدخلات من محطة التشغيل الخاصة بك وترسل النواتج إلى محطة التشغيل الخاصة بك. عادةً ما يستقرأ الأمر المدخلات من مكان يُدعى المدخل القياسي، بشكل افتراضي، هذا هو محطة التشغيل الخاصة بك. نفس الشيء، عادةً ما يكتب الأمر النواتج إلى مكان يُدعى المخرج القياسي، بشكل افتراضي، هذا هو محطة التشغيل الخاصة بك.
قائمة أوامر التوجيه كالتالي:
أمر | شرح |
---|---|
command > file | توجيه الناتج إلى file. |
command < file | توجيه المدخلات إلى file. |
command >> file | توجيه الناتج بطرق إضافية إلى file. |
n > file | توجيه ملف وصف ملف n إلى file. |
n >> file | توجيه ملف وصف ملف n بطرق إضافية إلى file. |
n >& m | دمج ملفي m وn. |
n <& m | دمج ملفي m وn. |
<< tag | استخدام المحتوى بين العلامات البدءية tag والعلامات النهائية tag كمدخل. |
الشيء المهم هو أن ملف الت描述ة 0 هو المدخل القياسي (STDIN)، 1 هو الإخراج القياسي (STDOUT)، و2 هو إخراج الأخطاء القياسي (STDERR).
يتم تنفيذ التوجيهات بشكل عام من خلال إدراج رموز معينة بين الأوامر. خاصةً، نمط هذه الرموز كالتالي:
command1 > file1
يتم تنفيذ هذا الأمر لتنفيذ command1 ثم حفظ نواتج الأمر في file1.
الرجاء الانتباه: سيتم استبدال محتويات file1 الموجودة حاليًا بالمحتوى الجديد. إذا كنت ترغب في إضافة المحتوى الجديد في نهاية الملف، استخدم علامة >>.
تنفيذ الأمر who التالي، سيتم توجيه نواتج الأمر الكاملة إلى ملف المستخدمين (users):
$ who > users
بعد تنفيذ الأمر، لن تتمكن من رؤية المعلومات في الطرفية، لأن الناتج تم توجيهه إلى الجهاز المعيّن للإخراج القياسي (الطرفية).
يمكنك استخدام الأمر cat لعرض محتويات الملف:
$ cat users _mbsetupuser console Oct 31 17:35 tianqixin console Oct 31 17:35 tianqixin ttys000 Dec 1 11:33
سيقوم توجيه الناتج بتغطية محتويات الملف، انظر المثال التالي:
$ echo "موقع دروس الأساسيات: ar.oldtoolbag.com" > users $ cat users موقع دروس الأساسيات: ar.oldtoolbag.com $
إذا لم تكن ترغب في تغطية محتويات الملف، يمكنك استخدام >> لجعلها تضيف إلى نهاية الملف، مثلًا:
$ echo "موقع دروس الأساسيات: ar.oldtoolbag.com" >> users $ cat users موقع دروس الأساسيات: ar.oldtoolbag.com موقع دروس الأساسيات: ar.oldtoolbag.com $
مثل توجيه الناتج، يمكن لـ Unix commands أيضًا الحصول على المدخل من الملف، ويكون النمط كالتالي:
command1 < file1
بهذا الشكل، سيتم تحويل الأمر الذي كان يتطلب المدخل من لوحة المفاتيح إلى قراءة المحتوى من الملف.
الرجاء الانتباه: يتم توجيه الناتج باستخدام زر (>)، بينما يتم توجيه المدخل باستخدام زر (<).
باستمرار في المثال السابق، نحتاج إلى حساب عدد الأسطر في ملف users، ننفذ الأمر التالي:
$ wc -l users 2 users
يمكن أيضًا توجيه المدخل إلى ملف users:
$ wc -l < users 2
الرجاء الانتباه: نتائج المثالين السابقين مختلفان: في المثال الأول، سيتم عرض اسم الملف؛ لا في المثال الثاني، لأنه يعرف فقط أن يقرأ المحتوى من المدخل القياسي.
command1 < infile > outfile
استبدال الإدخال والإخراج في نفس الوقت، تشغيل command1، من ملف infile، ثم كتابة الإخراج إلى outfile.
في معظم الحالات، يقوم كل أمر Unix/Linux بفتح ثلاثة ملفات عند تشغيله:
ملف الإدخال المعياري (stdin):وصف ملف stdin هو 0، يقرأ البرامج Unix البيانات بشكل افتراضي من stdin.
ملف الإخراج المعياري (stdout):وصف ملف stdout هو 1، يوجه البرامج Unix بيانات الإخراج بشكل افتراضي إلى stdout.
ملف الخطأ المعياري (stderr):وصف ملف stderr هو 2، يستخدم البرامج Unix ل写入 معلومات الخطأ إلى تدفق stderr.
بالتأكيد،command > file يوجه stdout إلى file،command < file يوجه stdin إلى file.
إذا كنت ترغب في توجيه stderr إلى file، يمكنك كتابة:
$ command 2> file
إذا كنت ترغب في إضافة stderr إلى نهاية ملف file، يمكنك كتابة:
$ command 2>> file
2 يعني ملف الخطأ المعياري (stderr).
إذا كنت ترغب في توجيه stdout و stderr معًا إلى file، يمكنك كتابة:
$ command > file 2>&1 أو $ command >> file 2>&1
إذا كنت ترغب في توجيه stdin و stdout كلاهما، يمكنك كتابة:
$ command < file1 > file2
يوجه command إدخال stdin إلى file1، ويوجه إخراج stdout إلى file2.
Here Document هي طريقة توجيه خاصة في Shell، تستخدم لتوجيه الإدخال إلى سكربت أو برنامج Shell تفاعلي.
شكلها الأساسي كالتالي:
command << delimiter document delimiter
وظيفته هي نقل محتوى delimiter بينهما (document) كمدخل لـ command.
ملاحظة:
يجب أن يكون delimiter في البداية عند النهاية، وليس يجب أن يكون هناك أي حرف قبل أو بعد، بما في ذلك الفراغات وtab indentation.
الفراغات التي قبل و بعد delimiter سيتم تجاهلها.
يمكنك حساب عدد السطور في Here Document عبر أمر wc -l في سطر الأوامر:
$ wc -l << EOF مرحبًا بك في موقع تعليميات الأساس ar.oldtoolbag.com EOF 3 # نتائج الخروج 3 سطر $
يمكننا أيضًا استخدام Here Document في السكربت، مثلًا:
#!/bin/bash # author:موقع تعليميات الأساس # url:ar.oldtoolbag.com cat << EOF مرحبًا بك في موقع تعليميات الأساس ar.oldtoolbag.com EOF
التنفيذ الكامل للسكربت، النتائج الخروج:
مرحبًا بك في موقع تعليميات الأساس ar.oldtoolbag.com
إذا كنت ترغب في تنفيذ أمر معين دون عرض نتائج الخروج على الشاشة، يمكنك إعادة توجيه الخروج إلى /dev/null:
$ command > /dev/null
/dev/null هو ملف خاص، أي محتوى يكتب إليه يتم التخلص منه؛ إذا حاولت قراءته، فإنك لن تحصل على أي شيء. ولكن ملف /dev/null مفيد للغاية، حيث يمكنك إعادة توجيه输出来 إليه، مما يؤدي إلى "منع الخروج".
إذا كنت ترغب في حجب stdout و stderr، يمكنك كتابة كما يلي:
$ command > /dev/null 2>&1
ملاحظة:0 هي المدخل القياسي (STDIN)،1 هو الخروج القياسي (STDOUT)،2 هو خروج الخطأ القياسي (STDERR).
هذه 2 و > لا يمكن أن يكون بينهما مسافة،2> يُعتبر الخطأ عند التكامل.