Exec - قيادة لينكس - قيادة يونيكس

exec - استدعاء subprocess (عناوين)

ملخص

ابيك ؟ مفاتيح ؟ أرج ؟ أرجع ... ؟

وصف

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

إذا بدأت الوسيطات الأولية exec بـ - عندئذ يتم التعامل معها كمفاتيح تبديل سطر الأوامر وليست جزءًا من مواصفات خط الأنابيب. المفاتيح التالية مدعومة حاليًا:

-keepnewline

يحتفظ بخط جديد لاحق في إخراج خط الأنابيب. عادة ما يتم حذف سطر جديد لاحق.

-

يمثل نهاية مفاتيح التبديل. سيتم التعامل مع الحجة التالية لهذا كالدليل الأول حتى إذا كان يبدأ بـ - .

إذا كان arg (أو زوج من arg ) يحتوي على أحد النماذج الموضحة أدناه ، فإنه يتم استخدامه من قبل exec للتحكم في تدفق المدخلات والمخرجات بين العمليات الفرعية (es). لن يتم تمرير مثل هذه الحجج إلى العملية الفرعية (العمليات). في نماذج مثل '' < fileName '' قد يكون fileName إما في وسيطة منفصلة من `` <'' أو في نفس الوسيطة مع عدم وجود مساحة متداخلة (أي `` <اسم الملف '').

|

يفصل بين الأوامر المتميزة في خط الأنابيب. سيتم توجيه الإخراج القياسي للأمر السابق إلى الإدخال القياسي للأمر التالي.

| &

يفصل بين الأوامر المتميزة في خط الأنابيب. سيتم توجيه كل من الإخراج القياسي والخطأ القياسي للأمر السابق إلى الإدخال القياسي للأمر التالي. هذا النوع من إعادة التوجيه يتجاوز نماذج مثل 2> و> &.

< اسم الملف

يتم فتح الملف المسمى من قبل fileName واستخدامه كمدخل قياسي للأمر الأول في خط الأنابيب.

<@ fileId

يجب أن يكون FileId هو المعرف لملف مفتوح ، مثل قيمة الإرجاع من مكالمة سابقة لفتحها . يتم استخدامه كمدخل قياسي للأمر الأول في خط الأنابيب. يجب فتح FileId للقراءة.

<< القيمة

يتم تمرير القيمة إلى الأمر الأول كمدخل قياسي.

> اسم الملف

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

2> اسم الملف

يتم إعادة توجيه الخطأ القياسي من جميع الأوامر في خط الأنابيب إلى الملف المسمى fileName ، بدلاً من محتوياته السابقة.

> & اسم الملف

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

>> اسم الملف

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

2 >> اسم الملف

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

>> & اسم الملف

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

> @ fileId

يجب أن يكون FileId هو المعرف لملف مفتوح ، مثل قيمة الإرجاع من مكالمة سابقة لفتحها . يتم إعادة توجيه الإخراج القياسي من الأمر الأخير إلى ملف fileId ، والذي يجب فتحه للكتابة.

2> @ fileId

يجب أن يكون FileId هو المعرف لملف مفتوح ، مثل قيمة الإرجاع من مكالمة سابقة لفتحها . يتم إعادة توجيه الخطأ القياسي من جميع الأوامر في خط الأنابيب إلى ملف fileId . يجب فتح الملف للكتابة.

> & @ fileId

يجب أن يكون FileId هو المعرف لملف مفتوح ، مثل قيمة الإرجاع من مكالمة سابقة لفتحها . يتم إعادة توجيه الإخراج القياسي من الأمر الأخير والخطأ القياسي من كافة الأوامر إلى ملف fileId . يجب فتح الملف للكتابة.

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

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

إذا لم تتم إعادة توجيه الإدخال القياسي مع `` <'أو' `<'' ، فسيتم أخذ الإدخال القياسي للأمر الأول في خط الأنابيب من الإدخال القياسي الحالي للتطبيق.

إذا كان الارجاع الأخير هو "` & "، فسيتم تنفيذ خط الأنابيب في الخلفية. في هذه الحالة ، يقوم الأمر exec بإرجاع قائمة تكون عناصرها معرفات العملية لكافة العمليات الفرعية الموجودة في خط الأنابيب. سينتقل المخرج القياسي من الأمر الأخير في خط الإنتاج إلى الإخراج القياسي للتطبيق إذا لم تتم إعادة توجيهه ، وسيذهب إخراج الخطأ من جميع الأوامر الموجودة في خط الأنابيب إلى ملف الخطأ القياسي للتطبيق ما لم تتم إعادة توجيهه.

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

قضايا قابلية النقل

Windows (جميع الإصدارات)

القراءة من أو الكتابة إلى مأخذ ، باستخدام "` @ fileId "، لا يعمل. عند قراءة من مأخذ توصيل ، سيتم تعليق تطبيق DOS 16 بت ثم سيعود تطبيق 32 بت مباشرة مع نهاية الملف. عندما يكتب أي نوع من التطبيق إلى مأخذ توصيل ، يتم إرسال المعلومات بدلاً من ذلك إلى وحدة التحكم ، إذا كان موجودًا أو تم تجاهله.

لا توفر أداة نص لوحة المفاتيح Tk إمكانيات IO قياسية حقيقية. تحت Tk ، عند إعادة التوجيه من الإدخال القياسي ، سترى جميع التطبيقات ملف نهاية فوري ؛ سيتم تجاهل المعلومات المعاد توجيهها إلى الإخراج القياسي أو الخطأ القياسي.

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

بالإضافة إلى ذلك ، عند استدعاء تطبيق 16 بت DOS أو Windows 3.X ، يجب أن تستخدم جميع أسماء المسارات صيغة المسار القصيرة والمشفرة (على سبيل المثال ، باستخدام `` applba ~ 1.def '' بدلاً من `` applbakery.default '' ).

تشير شريحتان مائلتان للأمام أو للخلف في صف في مسار إلى مسار شبكة. على سبيل المثال ، تسفر سلسلة بسيطة من الدليل الجذر c: / مع دليل فرعي / windows / system عن c: // windows / system (شريحتين معًا) ، والتي تشير إلى نقطة التثبيت المسماة على النظام الذي يدعى windows (و يتم تجاهل c: / ) ، وهو لا يعادل c: / windows / system ، الذي يصف دليلاً على الكمبيوتر الحالي. يجب استخدام الأمر join file لسَلسَلة مكونات المسار.

نظام التشغيل Windows NT

عند محاولة تنفيذ أحد التطبيقات ، قم بإجراء عمليات البحث الأولى للاسم كما تم تحديده. ثم ، في الترتيب ، يتم إلحاق com. ، .exe و. bat إلى نهاية الاسم المحدد ثم يبحث عن اسم أطول. إذا لم يتم تحديد اسم دليل كجزء من اسم التطبيق ، يتم البحث في الدلائل التالية تلقائيًا عند محاولة تحديد موقع التطبيق:

الدليل الذي تم تحميل الملف التنفيذي Tcl منه.
الدليل الحالي.
دليل نظام Windows NT 32-بت.
دليل نظام Windows NT 16-بت.
الدليل الرئيسي Windows NT.
الدلائل المسرودة في المسار.

من أجل تنفيذ أوامر shell المضمن مثل dir والنسخ ، يجب على المتصل أن يقوم بتبعية `` cmd.exe / c '' إلى الأمر المطلوب.

ويندوز 95

عند محاولة تنفيذ أحد التطبيقات ، قم بإجراء عمليات البحث الأولى للاسم كما تم تحديده. ثم ، في الترتيب ، يتم إلحاق com. ، .exe و. bat إلى نهاية الاسم المحدد ثم يبحث عن اسم أطول. إذا لم يتم تحديد اسم دليل كجزء من اسم التطبيق ، يتم البحث في الدلائل التالية تلقائيًا عند محاولة تحديد موقع التطبيق:

الدليل الذي تم تحميل الملف التنفيذي Tcl منه.
الدليل الحالي.
دليل نظام Windows 95.
الدليل الرئيسي لـ Windows 95.
الدلائل المسرودة في المسار.

من أجل تنفيذ أوامر shell المضمن مثل dir والنسخ ، يجب على المتصل أن يقوم بإضافة الأمر ` command.com / c 'إلى الأمر المطلوب.

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

لا تعمل إعادة التوجيه بين NUL: الجهاز والتطبيق 16 بت دومًا. عند إعادة التوجيه من NUL: ، قد يتعطل بعض التطبيقات ، سيحصل الآخرون على تدفق لا نهائي من البايت `` 0x01 '' ، وبعضهم سيحصل فعليًا بشكل صحيح على ملف نهاية فوري ؛ يبدو أن السلوك يعتمد على شيء تم تجميعه في التطبيق نفسه. عند إعادة توجيه أكبر من 4 كيلو بايت أو نحو ذلك إلى NUL: ، سيتم تعليق بعض التطبيقات. لا تحدث المشاكل المذكورة أعلاه مع تطبيقات 32 بت.

يتم تشغيل كافة تطبيقات DOS ذات 16 بت بشكل متزامن. يتم جمع كافة الإدخال القياسي من توجيه إلى تطبيق DOS 16 بت في ملف مؤقت؛ يجب إغلاق الطرف الآخر من توجيه الإخراج قبل بدء تشغيل التطبيق DOS 16 بت. يتم تجميع كافة الإخراج القياسي أو الخطأ من تطبيق DOS 16 بت إلى توجيه إلى ملفات مؤقتة؛ يجب إنهاء التطبيق قبل إعادة توجيه الملفات المؤقتة إلى المرحلة التالية من خط الأنابيب. هذا بسبب إلى حل Windows 95 bug في تطبيق توجيهات وهو كيفية معالجة shell Windows 95 DOS القياسية أنابيب نفسه.

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

ماكنتوش

لم يتم تنفيذ الأمر exec ولا يوجد تحت Macintosh.

يونكس

يعمل الأمر exec بشكل كامل ويعمل كما هو موضح.

أنظر أيضا

خطأ (n) ، مفتوح (n)

الكلمات الدالة

تنفيذ ، خط أنابيب ، إعادة توجيه ، subprocess

هام: استخدم الأمر man ( ٪ man ) لمعرفة كيفية استخدام أمر ما على جهاز الكمبيوتر الخاص بك.