Skip to main content

الرماد - قيادة لينكس

Cleaning The Dirtiest Car Interior Ever! Complete Disaster Full Interior Car Detailing Chevrolet SS (يوليو 2026)

Cleaning The Dirtiest Car Interior Ever! Complete Disaster Full Interior Car Detailing Chevrolet SS (يوليو 2026)

جدول المحتويات:

Anonim

اسم

sh - مترجم الأوامر (shell)

موجز

ش -/ + aCefnuvxIimqsVEbc -س اسم طويل -كلمات استهداف …

وصف

Sh هو مترجم الأوامر القياسي للنظام. النسخة الحالية منش هو في طور التغيير لتتفق معPOSIX مواصفات 1003.2 و 1003.2a للقشرة. يحتوي هذا الإصدار على العديد من الميزات التي تجعله يبدو مشابهاً من بعض النواحي لقشرة Korn ، ولكنه ليس نسخة Korn shell (راجع ksh (1)). فقط الميزات المحددة بواسطةPOSIX بالإضافة إلى بعض ملحقات Berkeley ، يتم دمجها في هذه القوقعة. نحن نتوقعPOSIX التوافق مع الوقت يتم إصدار 4.4 BSD. ليس المقصود هذه الصفحة رجل أن يكون تعليمي أو مواصفات كاملة للقذيفة.

نظرة عامة

shell هو أمر يقرأ الأسطر من أي ملف أو من المحطة ، ويفسرها ، وينفذ الأوامر الأخرى بشكل عام. هو البرنامج الذي يتم تشغيله عندما يقوم مستخدم بتسجيل الدخول إلى النظام (على الرغم من أنه يمكن للمستخدم تحديد shell مختلفة باستخدام الأمر chsh (1)). يطبق shell لغة تحتوي على تركيبات التحكم في التدفق ، وهو مرفق ماكرو يوفر مجموعة متنوعة من الميزات بالإضافة إلى تخزين البيانات ، إلى جانب إمكانات تحرير التاريخ والخطوط المضمنة. وهو يشتمل على العديد من الميزات للمساعدة في الاستخدام التفاعلي وله ميزة أن اللغة التفسيرية مشتركة لكل من الاستخدام التفاعلي وغير التفاعلي (نصوص shell). أي ، يمكن كتابة الأوامر مباشرة إلى shell قيد التشغيل أو يمكن وضعها في ملف ويمكن تنفيذ الملف مباشرة بواسطة shell.

استدعاء

في حالة عدم وجود أي args وإذا تم توصيل الإدخال القياسي shell إلى طرفية (أو إذا -أنايتم تعيين العلم) ، و-ج الخيار غير موجود ، وتعتبر قذيفة قذيفة التفاعلية. يطالب shell التفاعلي بشكل عام قبل كل أمر ويعالج أخطاء البرمجة والأوامر بشكل مختلف (كما هو موضح أدناه). عند بدء التشغيل لأول مرة ، تقوم shell بفحص الوسيطة 0 ، وإذا بدأت بشرطة "-" فإن shell يعتبر أيضًا shell تسجيل دخول. عادة ما يتم ذلك تلقائيًا بواسطة النظام عند تسجيل دخول المستخدم لأول مرة. تقوم قوقعة تسجيل الدخول أولاً بقراءة الأوامر من الملفات / etc / profile و .profile إذا كانت موجودة. إذا كان متغير البيئةENV تم تعيينه على الإدخال إلى shell ، أو تم تعيينه في .profile من shell تسجيل الدخول ، يقرأ shell التالي الأوامر من الملف المسمى فيENVلذلك ، يجب على المستخدم وضع الأوامر التي يتم تنفيذها فقط في وقت تسجيل الدخول في ملف .profile ، والأوامر التي يتم تنفيذها لكل قذيفة داخلENV ملف. لضبطENV متغير إلى بعض الملفات ، ضع السطر التالي في .profile الخاص بك الدليل الرئيسي

ENV = $ HOME / .shinit. تصدير ENV

استبدال "` .shinit "أي اسم الملف الذي ترغب فيه. منذENV تتم قراءة الملف لكل استدعاء للصدف ، بما في ذلك البرامج النصية shell والقواقع غير التفاعلية ، يكون النموذج التالي مفيدًا لتقييد الأوامر فيENV الملف إلى الدعوات التفاعلية. ضع الأوامر داخل `` case '' و `` esac '' أدناه (يتم وصف هذه الأوامر لاحقًا):

case $ - in * i *)

# أوامر للاستخدام التفاعلي فقط

ESAC

إذا تم تحديد وسيطات سطر الأوامر إلى جانب الخيارات ، فإن shell يعامل الوسيطة الأولى كاسم ملف يمكن منه قراءة الأوامر (برنامج نصي shell) ، ويتم تعيين الوسيطات المتبقية كمعلمات موضعية للصدفة ($ 1 ، 2 دولار ، وما إلى ذلك). خلاف ذلك ، يقرأ shell الأوامر من الإدخال القياسي الخاص به.

معالجة قائمة الوسيطة

جميع خيارات الحروف الفردية لها اسم مطابق يمكن استخدامه كوسيطة لـ -س اختيار. مجموعة -س يتم توفير الاسم بجوار خيار الحرف الواحد في الوصف أدناه. يؤدي تحديد شرطة "` - "إلى تشغيل الخيار ، بينما يؤدي استخدام علامة الجمع" `+" إلى تعطيل الخيار. يمكن تعيين الخيارات التالية من سطر الأوامر أو مع المجموعة (1) المضمنة (الموضحة لاحقًا).

allexport

تصدير جميع المتغيرات المخصصة ل. (غير مكتمل لـ 4.4alpha)

-c

قراءة الأوامر من سطر الأوامر. سيتم قراءة أي أوامر من الإدخال القياسي.

-C noclobber

لا تقم بالكتابة فوق الملفات الموجودة بـ ``> '((غير مخصّص لـ 4.4alpha)

-e errexit

إذا لم تكن تفاعلية ، قم بالخروج فوراً إذا فشل أي أمر لم يتم اختباره. تعتبر حالة الخروج لأمر اختبار صريح إذا تم استخدام الأمر للتحكم فيإذا elifwhile أوحتى أو إذا كان الأمر هو المعامل اليدوي لعامل '`&&' 'أو' || || '.

-F noglob

تعطيل توسيع اسم المسار.

-n noexec

إذا لم يكن تفاعليًا ، قم بقراءة الأوامر ولكن لا تقم بتنفيذها. هذا مفيد للتحقق من صيغة النصوص البرمجية shell.

-u nounset

اكتب رسالة إلى الخطأ القياسي عند محاولة توسيع متغير لم يتم تعيينه ، وإذا لم تكن shell تفاعلية ، فقم بالخروج مباشرة. (غير مكتمل لـ 4.4alpha)

-الخامس مطنب

يكتب shell مدخلاته إلى الخطأ القياسي أثناء قراءته. مفيدة لتصحيح الأخطاء.

-x xtrace

اكتب كل أمر إلى الخطأ القياسي (مسبوقًا بعلامة `+` قبل أن يتم تنفيذه. مفيد لتصحيح الأخطاء.

-q quietprofile

إذا -الخامس أو -س تم تعيين خيارات ، لا تنطبق عليها عند قراءة ملفات التهيئة ، هذه الملفات / etc / profile .profile والملف المحدد بواسطةENV متغيرات البيئة.

-أنا ignoreeof

تجاهل EOF's من الإدخال عند التفاعلية.

-أنا متفاعل

إجبار الصدفة على التصرف بشكل تفاعلي.

-m مراقب

قم بتشغيل التحكم في الوظيفة (تعيين تلقائي عندما تكون تفاعلية).

-s ستدين

قراءة الأوامر من الإدخال القياسي (يتم تعيينها تلقائيًا في حالة عدم وجود وسائط ملف). لا يكون لهذا الخيار أي تأثير عند تعيينه بعد بدء تشغيل shell بالفعل (أي مع المجموعة (1)).

-الخامس السادس

تمكين محرر سطر الأوامر المضمنة vi (1) (تعطيل -E إذا تم ضبطه).

-E ايماكس

تمكين محرر سطر الأوامر المدمج emacs (1) (تعطيل -الخامس إذا تم ضبطه).

أبلغ

تمكين الإعلام غير المتزامن لإكمال مهمة الخلفية. (غير مكتمل لـ 4.4alpha)

هيكل معجمي

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

"مشغلي التحكم:"

& && ( ) ; ;; | ||

"مشغل إعادة التوجيه:"

< > >| << >> <& >& <<- <>

نقلا عن

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

مائل

يحافظ الخط المائل عكسي على المعنى الحرفي للحرف التالي ، باستثناء Aq newline. يتم التعامل مع الخط المائل العكسي الذي يسبق السطر الجديد Aq على أنه استمرار خط.

ونقلت واحدة

يحافظ إرفاق الأحرف في علامات الاقتباس المفردة على المعنى الحرفي لجميع الأحرف (باستثناء علامات الاقتباس الفردية ، مما يجعل من المستحيل وضع علامات تنصيص مفردة في سلسلة واحدة محددة).

التنصيص

يحافظ إرفاق الأحرف ضمن علامات اقتباس مزدوجة على المعنى الحرفي لجميع الأحرف باستثناء backquote ($) ($) backlines ($) وخط مائل عكسي () إن الخط المائل للخلف داخل علامات اقتباس مزدوجة هو تاريخياً عجيب ، ويعمل على اقتباس الأحرف التالية فقط:

$ `

وإلا فإنه يبقى حرفيًا.

الكلمات المحجوزة

الكلمات المحجوزة هي كلمات لها معنى خاص للصدفة ويتم التعرف عليها في بداية السطر وبعد مشغل التحكم. فيما يلي الكلمات المحجوزة:

! تاelif Ta fi Ta في حالة Ta

آخر تال Ta Ta Ta Ta Ta

هل تافعلت تا حتى تا إذا esac

ويناقش معناها في وقت لاحق.

اسماء مستعارة

الاسم المستعار هو اسم وقيمة تعيين المطابق باستخدام الأمر alias (1). عندما تحدث كلمة محجوزة (انظر أعلاه) ، وبعد التحقق من الكلمات المحجوزة ، يقوم shell بالتحقق من الكلمة لمعرفة ما إذا كان يتطابق مع اسم مستعار. إذا كان كذلك ، فإنه يستبدلها في تدفق الإدخال بقيمة. على سبيل المثال ، إذا كان هناك اسم مستعار يسمى `'lf' 'بالقيمة` `ls -F' '، فسيكون الإدخال:

لو فوبار

قد يصبح

ls -F foobar

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

الأوامر

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

أوامر بسيطة

إذا تم التعرف على أمر بسيط ، تقوم shell بتنفيذ الإجراءات التالية:

  1. يتم التخلص من الكلمات الرئيسية للنموذج "اسم = قيمة" ويتم تعيينها إلى بيئة الأمر البسيط. يتم فصل مشغلي إعادة التوجيه وحجوزاتهم (كما هو موضح أدناه) وحفظها للمعالجة.

  2. يتم توسيع الكلمات المتبقية كما هو موضح في المقطع المسمى `` Expansions '' وتعتبر الكلمة المتبقية الأولى اسم الأمر ويتم وضع الأمر. تعتبر الكلمات المتبقية وسائط الأمر. إذا لم يكن هناك أي اسم أمر ، فإن تخصيصات المتغير `` name = value '' المعترف بها في البند 1 تؤثر على shell الحالي.

  3. يتم تنفيذ عمليات إعادة التوجيه كما هو موضح في القسم التالي.

إعادة توجيه

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

ن ملف redir-op

أين redir المرجع هي واحدة من عوامل إعادة التوجيه المذكورة سابقا. فيما يلي قائمة بإمكانية إعادة التوجيه. Bq n هو رقم اختياري ، كما هو الحال في `3 '(وليس' Bq 3 'يشير إلى واصف الملف.

n> ملف

إعادة توجيه الإخراج القياسي (أو n) إلى الملف.

n> | ملف

نفس الشيء ، ولكن تجاوز -C اختيار.

n >> ملف

إلحاق الإخراج القياسي (أو n) إلى الملف.

ن <ملف

إعادة توجيه الإدخال القياسي (أو n) من الملف.

n1 <& n2

تكرار الإدخال القياسي (أو n1) من واصف الملف n2.

n <& -

إغلاق الإدخال القياسي (أو n).

n1> & n2

الناتج القياسي المكرر (أو n1) من n2.

n> & -

إغلاق الإخراج القياسي (أو ن).

n <> ملف

فتح الملف للقراءة والكتابة على الإدخال القياسي (أو n).

غالبًا ما يُطلق على إعادة التوجيه التالي اسم "المستند هنا".

n << delimiter

هنا للوثائق النص …

محدد

يتم حفظ كل النص الموجود في الخطوط المتعاقبة إلى المحدد ويتم إتاحته للأمر في الإدخال القياسي ، أو واصف الملف n إذا تم تحديده.إذا تم الاستشهاد بالمحدد كما هو محدد في السطر الأولي ، فسيتم التعامل مع نص الوثيقة هنا حرفيًا ، وإلا فسيخضع النص لتوسيع المعلمة واستبدال الأمر والتوسيع الحسابي (كما هو موضح في قسم "التوسعات"). "إذا كان المشغل` `- - '' بدلاً من` `<< '' ، فسيتم تجريد علامات التبويب الموجودة في نص الوثيقة هنا.

البحث والتنفيذ

هناك ثلاثة أنواع من الأوامر: وظائف shell وأوامر builtin وبرامج عادية - ويتم البحث عن الأمر (بالاسم) بهذا الترتيب. يتم تنفيذ كل منهما بطريقة مختلفة.

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

يتم تنفيذ shell builtins داخليًا على shell ، دون إنتاج أي عملية جديدة.

وإلا ، إذا لم يتطابق اسم الأمر مع وظيفة أو مضمن ، يتم البحث عن الأمر كبرنامج عادي في نظام الملفات (كما هو موضح في القسم التالي). عند تنفيذ برنامج عادي ، يقوم shell بتشغيل البرنامج ، ويمرر الوسيطات والبيئة إلى البرنامج. إذا كان البرنامج ليس ملفًا قابلاً للتنفيذ العادي (أي إذا لم يبدأ بـ "الرقم السحري" لهASCII التمثيل هو "#!" ، لذلك execve (2) بإرجاع Er ENEXEX ثم) سوف shell تفسير البرنامج في subshell. سيتم إعادة تهيئة غلاف الطفل بنفسه في هذه الحالة ، بحيث يكون التأثير كما لو تم استدعاء shell جديد لمعالجة البرنامج النصي shell المخصص ، إلا أنه سيتم تذكر موقع الأوامر المجزأة الموجود في shell الأصل من قبل الطفل.

لاحظ أن الإصدارات السابقة من هذا المستند ورمز المصدر نفسه بشكل مضلل وبشكل متقطع يشير إلى برنامج نصي shell بدون رقم سحري كـ "إجراء shell".

مسار البحث

عند تحديد موقع أمر ، فإن القشرة تبدو لأول مرة لمعرفة ما إذا كان لديها وظيفة shell بهذا الاسم. ثم يبحث عن أمر مدمج بهذا الاسم. إذا لم يتم العثور على أمر مدمج ، يحدث أحد أمرين:

  1. يتم تنفيذ أسماء الأوامر التي تحتوي على شرطة مائلة ببساطة دون إجراء أي عمليات بحث.

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

حالة خروج القيادة

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

أوامر معقدة

الأوامر المعقدة عبارة عن مجموعات من الأوامر البسيطة مع مشغلات التحكم أو الكلمات المحجوزة ، معًا إنشاء أمر معقد أكبر. بشكل عام ، يكون الأمر واحدًا مما يلي:

  • أمر بسيط
  • خط انابيب
  • قائمة أو قائمة مركبة
  • أمر مركب
  • تعريف الوظيفة

ما لم ينص على خلاف ذلك ، فإن حالة الخروج لأمر هي أمر آخر أمر بسيط تم تنفيذه بواسطة الأمر.

خطوط الأنابيب

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

تنسيق خط الأنابيب هو:

! command1 | command2 …

يتم توصيل الإخراج القياسي من command1 بالإدخال القياسي لـ command2. يعتبر الإدخال القياسي أو الإخراج القياسي أو كلا الأمرين معينًا بواسطة خط الأنابيب قبل أي إعادة توجيه محددة بواسطة مشغلات إعادة التوجيه التي تشكل جزءًا من الأمر.

إذا لم يكن خط الأنابيب في الخلفية (تمت مناقشته لاحقًا) ، فإن shell ينتظر انتهاء جميع الأوامر.

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

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

$ command1 2> & 1 | command2

يرسل الإخراج القياسي والخطأ القياسي من command1 إلى الإدخال القياسي لـ command2.

ا ؛ أو يؤدي فاصل السابقة AND-OR- قائمة (الموضحة أدناه) ليتم تنفيذها بالتسلسل؛ أ & يؤدي التنفيذ غير المتزامن من قائمة AND-OR السابقة.

لاحظ أنه على عكس بعض الأصداف الأخرى ، فإن كل عملية في خط الأنابيب هي طفل من الغلاف المستدعي (ما لم تكن صدفية ، وفي هذه الحالة يتم تنفيذها في الغلاف الحالي - ولكن يتم مسح أي تأثير لها على البيئة).

أوامر الخلفية -

إذا تم إنهاء أمر بواسطة عامل تشغيل عنصر التحكم (&) ، تقوم shell بتنفيذ الأمر بشكل غير متزامن - أي ، لا تنتظر shell الأمر حتى ينتهي قبل تنفيذ الأمر التالي.

تنسيق تشغيل أمر في الخلفية هو:

command1 و command2 & …

إذا كانت shell غير تفاعلية ، فسيتم تعيين الإدخال القياسي لأمر غير متزامن على / dev / null

القوائم - يتحدث بشكل عام

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

مشغلات قائمة قصر

`` && '' و `'||' 'هي عوامل تشغيل قائمة AND-OR. `` && '' ينفذ الأمر الأول ، ثم ينفذ الأمر الثاني إذا كانت حالة الخروج للأمر الأول هي صفر. `` || '' مشابه ، لكنه ينفذ الأمر الثاني إذا كانت حالة الخروج للأمر الأول غير صفرية. كل من "` && "و" '|| "كلاهما لهما نفس الأولوية.

تصاريح التحكم في التدفق - إذا ، بالنسبة للحالة

بناء جملة الأمر if

إذا القائمة

ثم قائمة

قائمة elif

ثم قائمة …

قائمة أخرى

فاي

بناء جملة الأمر أثناء

في حين القائمة

تأليف لائحة

فعله

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

بناء جملة الأمر للأمر

للمتغير في كلمة …

تأليف لائحة

فعله

يتم توسيع الكلمات ، ثم يتم تنفيذ القائمة بشكل متكرر مع تعيين متغير لكل كلمة في المقابل. يمكن الاستعاضة عن الفعل والقيام بهما بـ `` {'' و ``} ''

بناء الجملة من كسر ومتابعة الأمر هو

كسر عدد

تابع عدد

فاصل إنهاء num أعمق أو أثناء حلقات. استمر في الاستمرار مع التكرار التالي للحلقة الداخلية. يتم تنفيذ هذه الأوامر المضمنة.

صيغة بناء جملة الأمر

كلمة حالة في

نمط) قائمة ؛

ESAC

يمكن أن يكون النمط في الواقع نموذجًا واحدًا أو أكثر (راجع أنماط Shell الموضحة لاحقًا) ، مفصولة بأحرف `` '.

تجميع الأوامر معا

قد يتم تجميع الأوامر عن طريق الكتابة إما

(قائمة)

أو

{list؛

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

{printf hello؛ العالم printf n "؛}> التحية

المهام

بناء جملة تعريف الدالة

اسم () الأمر

تعريف الدالة هو عبارة قابلة للتنفيذ؛ عند تنفيذه يقوم بتثبيت وظيفة مسماة باسم وإرجاع حالة خروج صفر. عادة ما يكون الأمر عبارة عن قائمة محاطة بين `` {'' و ``} ''

قد يتم اعتبار المتغيرات محلية لدالة باستخدام أمر محلي. يجب أن يظهر هذا كـ العبارة الأولى من دالة وهو بناء الجملة

المحلي متغير | - …

يتم تنفيذ المحلية كأمر مدمج.

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

المعلمة الخاصة الوحيدة التي يمكن إجراؤها محلياً هي `` - '' جعل `` - '' أي خيارات محلية shell يتم تغييرها عن طريق الأمر set داخل الدالة ليتم استعادتها إلى قيمها الأصلية عند إرجاع الدالة.

بناء جملة الأمر الإرجاع

العودة exitstatus

انه ينهي وظيفة التنفيذ حاليا. يتم تنفيذ العودة كأمر مدمج.

المتغيرات والمعلمات

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

اسم = قيمة

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

المعلمات Position

المعلمة الموضعية هي معلمة برقم (n> 0). يقوم shell بتعيين هذه القيم في البداية لقيم وسيطات سطر الأوامر الخاصة به والتي تتبع اسم البرنامج النصي shell. يمكن أيضًا استخدام المجموعة (1) المضمنة لضبطها أو إعادة ضبطها.

المعلمات الخاصة

المعلمة الخاصة هي معلمة تشير إلى أحد الأحرف الخاصة التالية. يتم سرد قيمة المعلمة بجانب الحرف الخاص به.

*

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

@

يمتد إلى المعلمات الموضعية ، بدءا من واحد.عندما يحدث التوسع ضمن علامات تنصيص مزدوجة ، يتم توسيع كل معلمة موضعية كوسيطة منفصلة. إذا لم تكن هناك معلمات موضعية ، فإن توسيع @ يولد حججًا صفرية ، حتى عندما تكون علامة @ مزدوجة. ما يعنيه هذا بشكل أساسي ، على سبيل المثال ، إذا كان $ 1 هو "abc" ، وكان $ 2 هو "def ghi" ، ثم Qq $ @ يتم توسيعه إلى الوسيطتين:

abc def ghi

#

يمتد إلى عدد من المعلمات الموضعية.

?

يمتد إلى حالة الخروج من أحدث خط أنابيب.

- (الواصلة.)

يتوسع إلى علامات الخيار الحالية (أسماء الخيارات أحادية الحرف متسلسلة في سلسلة) كما هو محدد في الطلب ، من خلال أمر setin المدمج ، أو ضمنيًا بالصدفة.

$

يتوسع لمعرف العملية للهيكل المستدعي. تحتفظ Subshell بنفس قيمة $ الأصل.

!

يتوسع لمعرف العملية لأحدث أمر خلفية تم تنفيذه من shell الحالي. بالنسبة لخط الأنابيب ، يكون معرف العملية هو الأمر الأخير في خط الأنابيب.

0 (صفر.)

يمتد إلى اسم البرنامج النصي shell أو shell.

توسع كلمة

يصف هذا البند التوسعات المختلفة التي يتم تنفيذها على الكلمات. لا يتم تنفيذ جميع التوسعات في كل كلمة ، كما هو موضح في وقت لاحق.

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

ترتيب توسيع الكلمات هو:

  1. توسيع تيلدا ، توسيع المعلمة ، تبديل القيادة ، التوسع الحسابي (كل هذه تحدث في نفس الوقت).

  2. يتم تنفيذ Field Splitting على الحقول التي تم إنشاؤها بواسطة الخطوة (1) ما لم يكنIFS متغير فارغ.

  3. توسيع Pathname (ما لم يتم ضبطه -F هو في الواقع).

  4. إزالة الاقتباس.

يتم استخدام الحرف $ لإدخال توسيع المعلمة أو استبدال الأمر أو التقييم الحسابي.

توسيع تيلدا (استبدال الدليل الرئيسي للمستخدم)

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

توسيع المعلمة

يكون تنسيق توسيع المعلمة كما يلي:

$ {تعبير}

حيث يتكون التعبير من جميع الأحرف حتى لا تتطابق مع المطابقة ``} '' أي ``} '' بواسطة شرطة مائلة عكسية أو داخل سلسلة مقتبسة ، ولا يتم فحص الأحرف في التوسعات الحسابية المدمجة ، واستبدال الأوامر ، والتوسعات المتغيرة ، في تحديد المطابقة ``} ''

أبسط شكل لتوسيع المعلمة هو:

$ {المعلمة}

يتم استبدال القيمة ، إن وجدت ، من المعلمة.

يمكن وضع اسم المعلمة أو رمزها في أقواس ، وهي اختيارية باستثناء المعلمات الموضعية ذات أكثر من رقم واحد أو عندما يتم تتبع المعلمة بحرف يمكن تفسيره كجزء من الاسم. في حالة حدوث توسيع المعلمة داخل علامات اقتباس مزدوجة:

  1. لا يتم تنفيذ توسيع Pathname على نتائج التوسع.

  2. لا يتم تنفيذ تقسيم الحقل على نتائج التوسيع ، باستثناء @.

بالإضافة إلى ذلك ، يمكن تعديل توسيع المعلمة باستخدام أحد التنسيقات التالية.

$ {المعلمة: الكلمات البالغ}

استخدم القيم الافتراضية. إذا كانت المعلمة غير محددة أو خالية ، فسيتم استبدال توسع الكلمة ؛ خلاف ذلك ، يتم استبدال قيمة المعلمة.

$ {المعلمة: = كلمة}

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

$ {المعلمة: كلمة}

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

$ {المعلمة: + كلمة}

استخدم قيمة بديلة. إذا كانت المعلمة غير محددة أو خالية ، فسيتم استبدال null؛ خلاف ذلك ، يتم استبدال توسع الكلمة.

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

$ {# المعلمة}

طول سلسلة. الطول بالأحرف من قيمة المعلمة.

توفر الأنواع الأربعة التالية من توسيع المعلمة معالجة فرعية. في كل حالة ، يتم استخدام تدوين مطابقة النمط (راجع أنماط Shell) بدلاً من تدوين التعبير العادي ، لتقييم الأنماط. إذا كانت المعلمة هي * أو @ ، فإن نتيجة التوسع غير محددة. لا يؤدي إحاطة سلسلة توسيع المعلمة الكاملة في علامات اقتباس مزدوجة إلى اقتباس الأنواع الأربعة التالية من أحرف النمط ، في حين أن اقتباس الأحرف داخل الأقواس له هذا التأثير.

$ {المعلمة٪ كلمة}

إزالة أصغر نمط لاحقة. يتم توسيع الكلمة لإنتاج نمط. ينتج عن توسع المعلمة في المعلمة ، مع أصغر جزء من اللاحقة يتطابق مع النمط المحذوف.

$ {المعلمة ٪٪ كلمة}

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

$ {المعلمة # كلمة}

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

$ {المعلمة ## كلمة}

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

تبديل الأوامر

يسمح استبدال الأوامر باستبدال إخراج أمر بدلاً من اسم الأمر نفسه. يحدث استبدال الأمر عندما يتم تضمين الأمر كما يلي:

$ (الأمر)

أو بو `` backquoted '' نسخة الكمبيوتر:

`command`

تقوم shell بتوسيع استبدال الأمر عن طريق تنفيذ الأمر في بيئة فرعية واستبدال استبدال الأمر بالمخرج القياسي للأمر ، وإزالة تسلسل واحد أو أكثر ق في نهاية الاستبدال. (المضمنة ق قبل لا يتم إزالة نهاية الإخراج. ومع ذلك ، أثناء تقسيم الحقل ، قد يتم ترجمتها إلى الصورة ، اعتمادا على قيمةIFS واقتباس ذلك ساري المفعول.)

التوسع الحسابي

يوفر التوسع الحسابي آلية لتقييم تعبير حسابي واستبدال قيمته. يكون تنسيق التوسع الحسابي كما يلي:

$ ((التعبير))

يتم التعامل مع التعبير كما لو كان في علامات اقتباس مزدوجة ، باستثناء أن الاقتباس المزدوج داخل التعبير لا يتم التعامل معه بشكل خاص. يوسع shell كل الرموز المميزة في التعبير لتوسيع المعلمة ، واستبدال الأمر ، وإقتباس الاقتباس.

بعد ذلك ، تعامل القوقعة ذلك كتعبير حسابي وتحل محل قيمة التعبير.

تقسيم الفضاء الأبيض (Field Splitting)

بعد توسع المعلمات ، واستبدال الأمر ، والتوسعة الحسابية ، تقوم shell بفحص نتائج التوسعات والاستبدالات التي لم تحدث في علامات اقتباس مزدوجة لتقسيم الحقل ويمكن أن تنتج حقول متعددة.

شل يعامل كل حرف منIFS كمحدد واستخدام المحددات لتقسيم نتائج توسيع المعلمة واستبدال الأمر في الحقول.

توسيع اسم Pathname (إنشاء اسم الملف)

ما لم يكن -F يتم تعيين علامة ، يتم تنفيذ اسم ملف بعد اكتمال تقسيم الكلمات. يتم النظر إلى كل كلمة على أنها سلسلة من الأنماط ، مفصولة بخطوط مائلة. تحل عملية التوسع محل الكلمة بأسماء كل الملفات الموجودة التي يمكن تشكيل أسماؤها باستبدال كل نمط بسلسلة تتطابق مع النمط المحدد. هناك نوعان من القيود على ذلك: أولاً ، لا يمكن أن يتطابق النمط مع سلسلة تحتوي على شرطة مائلة ، وثانياً ، لا يمكن أن يتطابق النمط مع سلسلة تبدأ مع فترة ما لم يكن الحرف الأول للنمط عبارة عن نقطة. يصف القسم التالي الأنماط المستخدمة لكل من توسع Pathname وأمر الحالة (1).

أنماط شل

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

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

لتضمين `` '' في فئة الحرف ، اجعله أول حرف مدرج (بعد '`!' 'إن وجد). لتضمين علامة ناقص ، اجعلها أول أو آخر حرف مدرج

Builtins

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

:

أمر فارغ يقوم بإرجاع قيمة الخروج 0 (true).

. ملف

يتم قراءة الأوامر الموجودة في الملف المحدد وتنفيذها بواسطة shell.

الاسم المستعار اسم = السلسلة …

إذا اسم = سلسلة يتم تحديد shell يحدد الاسم المستعار اسم مع القيمة خيط لو فقط اسم محددة ، قيمة الاسم المستعار اسم مطبوع. مع عدم وجود الحجج ، والاسم المستعار مدمج يطبع أسماء وقيم جميع الأسماء المستعارة المحددة (انظرالياليس)

bg وظيفة …

متابعة المهام المحددة (أو الوظيفة الحالية إذا لم يتم إعطاء أي وظائف) في الخلفية.

أمر الأمر arg …

تنفيذ الأمر المدمج المحدد. (هذا مفيد عندما يكون لديك دالة shell بنفس الاسم كأمر مضمن.)

القرص المضغوط دليل

قم بالتبديل إلى الدليل المحدد (افتراضي)$ HOME) إذا كان دخول لCDPATH يظهر في بيئةالقرص المضغوط الأمر أو متغير shellCDPATH تم تعيينه ولا يبدأ اسم الدليل بخط مائل ، ثم يتم سرد الدلائل فيCDPATH سيتم البحث عن الدليل المحدد. شكلCDPATH هو نفسه مثل منمسار في قذيفة التفاعلية ، والقرص المضغوط سيطبع الأمر اسم الدليل الذي تحول إليه بالفعل إذا كان هذا مختلفًا عن الاسم الذي قدمه المستخدم. قد تكون هذه مختلفة إما لأنCDPATH تم استخدام آلية أو لأنه تم عبور ارتباط رمزي.

وحدة التقييم خيط…

سلسل جميع الحجج مع المساحات. ثم إعادة تحليل وتنفيذ الأمر.

إكسيك الأمر arg …

ما لم يتم حذف الأمر ، يتم استبدال عملية shell بالبرنامج المحدد (الذي يجب أن يكون برنامجًا حقيقيًا ، وليس بنية أو وظيفة shell). أي إعادة توجيه علىإكسيكيتم وضع علامة على أنها دائمة ، بحيث لا يتم التراجع عنها عندإكسيك ينتهي الأمر.

ىخرج حالة الانتهاء

قم بإنهاء عملية shell. إذا حالة الانتهاء يتم إعطاؤه أنه يستخدم كحالة خروج shell ؛ وإلا يتم استخدام حالة الخروج من الأمر السابق.

تصدير اسم…

تصدير -p

يتم تصدير الأسماء المحددة بحيث تظهر في بيئة الأوامر التالية. والطريقة الوحيدة لعدم تصدير متغير هي إلغاء تعيينه. تسمح shell بتحديد قيمة المتغير في نفس الوقت الذي يتم فيه تصديره بالكتابة

اسم التصدير = القيمة

بدون أي وسيطات يقوم أمر التصدير بسرد أسماء كل المتغيرات المصدرة. مع ال -صالخيار المحدد سيتم تنسيق الإخراج بشكل مناسب للاستخدام غير التبادلي.

FC-البريد محرر أول الاخير

fc -l -تقرير وطني أول الاخير

fc -s العمر = جديد أول

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

من المحرر

استخدم المحرر المسمى من قبل محرر لتحرير الأوامر. سلسلة المحرر هي اسم أمر ، تخضع للبحث عبرمسار متغير. القيمة فيFCEDIT يستخدم متغير كإعداد افتراضي عند -البريد غير محدد. إذاFCEDIT هو null أو unset ، قيمةمحرر يستخدم متغير. إذامحرر هو null أو unset ، يتم استخدام ed (1) كمحرر.

-l (ell)

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

-n

منع أرقام الأوامر عند الإدراج مع -l.

-r

عكس ترتيب الأوامر المدرجة (مع -ل أو تحرير (مع لا -ل ولا -ق)

-s

أعد تنفيذ الأمر بدون استدعاء محرر.

أول

الاخير

حدد الأوامر المطلوب إدراجها أو تعديلها. يتم تحديد عدد الأوامر السابقة التي يمكن الوصول إليها من خلال قيمةHISTSIZE متغير. قيمة الأول أو الأخير أو كليهما واحدة مما يلي:

+ عدد

رقم موجب يمثل رقم الأمر ؛ يمكن عرض أرقام الأوامر مع -ل اختيار.

-رقم

رقم عشري سالب يمثل الأمر الذي تم تنفيذه لعدد الأوامر السابقة. على سبيل المثال ، -1 هو الأمر السابق مباشرة.

خيط

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

تؤثر متغيرات البيئة التالية على تنفيذ fc:

FCEDIT

اسم المحرر لاستخدامه.

HISTSIZE

عدد الأوامر السابقة التي يمكن الوصول إليها.

FG وظيفة

انقل المهمة المحددة أو المهمة الحالية إلى المقدمة.

getopts optstring var

الPOSIX getopts الأمر ، لا ينبغي الخلط بينه وبين مختبرات Bell getopt (1).

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

الgetopts أمر يستبعد المنفعة getopt (1) القديمة بسبب تعاملها مع الحجج التي تحتوي على مسافة بيضاء.

الgetopts يمكن استخدام builtin للحصول على الخيارات وحججها من قائمة المعلمات. عندما يتم الاحتجاج بها ،getopts يضع قيمة الخيار التالي من سلسلة الخيار في القائمة في متغير shell المحدد بواسطة فار وهو مؤشر في متغير shellOPTIND عندما يتم استدعاء shell ،OPTIND تتم تهيئة إلى 1. لكل خيار يتطلب حجة ،getopts سوف يضعها في متغير shellOPTARG إذا كان الخيار غير مسموح به في optstring ثمOPTARG سوف يكون unset.

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

يتم إرجاع قيمة غير صفرية عند الوصول إلى الخيار الأخير. إذا لم تكن هناك حجج متبقية ،getopts سيتم تعيين فار إلى الخيار الخاص ، "` - "وإلا ، فإنه سيتم تعيين فار إلى "؟"

يوضح جزء التعليمات البرمجية التالي كيف يمكن معالجة الوسيطات للأمر الذي يمكن أن يأخذ الخيارات أ و ب والخيار c الذي يتطلب وسيطة.

بينما يخطئ abc: fفعلcase $ f inأ | ب) العلم = $ f ؛؛c) carg = $ OPTARG ؛؛؟) echo $ USAGE؛ الخروج 1 ؛ESACفعلهshift `expr $ OPTIND - 1`

سيقبل هذا الرمز أي مما يلي كما يلي:

cmd -karg file filecmd -a -c ملف ملف argcmd -carg -a ملف ملفcmd -a -carg - ملف ملف

التجزئة -rv أمر…

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

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

jobid وظيفة

اطبع معرف العملية الخاص بالعمليات في المهمة. إذا كان وظيفة يتم حذف الوسيطة ، يتم استخدام المهمة الحالية.

وظائف

يسرد هذا الأمر جميع عمليات الخلفية التي هي أطفال عملية shell الحالية.

الأشخاص ذوي الإعاقة

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

اقرأ-ص مستعجل -ص متغير…

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

افتراضيًا ، ما لم يكن -ص يتم تحديد الخيار ، يعمل الخط المائل عكسيًا `` '' كحرف هروب ، مما يؤدي إلى معالجة الحرف التالي حرفيًا. إذا كان الخط المائل العكسي متبوعًا بخط جديد ، فسيتم حذف الخط المائل العكسي والخط الجديد.

يقرأ فقط اسم…

readonly -p

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

اسم readonly = القيمة

مع عدم وجود وسائط يقوم الأمر readonly بسرد أسماء كل المتغيرات التي تقرأ فقط. مع ال -ص الخيار المحدد سيتم تنسيق الإخراج بشكل مناسب للاستخدام غير التبادلي.

جلس