البرمجة في باش - الجزء الأول

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

ما هو "النص"؟

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

يتم تحديد اللغة التي يستخدمها Bash بواسطة مترجمها الخاص وتجمع بين بناء جملة Shells الأخرى ، مثل Korn Shell (ksh) أو C Shell (csh). يمكن أيضًا استخدام العديد من الأوامر التي تُستخدم عادةً في وحدة التحكم في البرامج النصية ، باستثناء تلك التي تتعلق بشكل صارم بتوزيع معين.

هيكل النص

للبدء ، يجب أن يكون لدينا محرر نصوص ورغبة في البرمجة. يمكن تنفيذ (أو تفسير) الملفات التي نحفظها بامتداد .sh بواسطة وحدة التحكم ، طالما أن السطر الأول هو التالي:

#! / بن / باش

هذا يخبر النظام لاستخدام وحدة التحكم لتشغيل الملف. أيضًا ، يسمح لك الحرف # بكتابة التعليقات. لإنشاء أبسط مثال ، نضيف سطرًا آخر ، كما هو موضح في الصورة التالية:

يعرض الأمر echo رسالة على الشاشة ، في هذه الحالة هي "Hello world!" إذا قمنا بحفظها وتنفيذها باستخدام وحدة التحكم ، فسنرى النتيجة.

الأوامر الأساسية

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

الأسماء المستعارة: تسمح باستبدال سلسلة من الكلمات بسلسلة أقصر ، مما يسمح بتقليل الكود.

#create اسمًا مستعارًا يسمى per مع عنوان الاسم المستعار لمجلد #Downloads per = '/ home / user / Downloads' # في كل مرة نرغب في استخدامها ، يتعين علينا فقط استدعاء # الكلمة الجديدة لكل # لتدمير هذا الاسم المستعار ، نستخدم unalias unalias في

كسر: يسمح لك بالخروج فورًا من حلقة من أجل ، بينما ، حتى أو تحديد حلقة (سنقوم بدراسة الحلقات بالتفصيل لاحقًا)

#Create a loop الذي سيخصص الأرقام من 1 إلى 5 # لكل "دورة في الحلقة" للعداد في 1 2 3 4 5 do # نطبع القيمة الحالية للمتغير #counter ، والذي يتم تحليله بواسطة الحرف $ echo " $ counter ”# إذا كانت قيمة العداد تساوي 3 إذا [$ counter –eq 3] فإن # الفاصل يخرج من الحلقة لكسر فاي تم

تابع - مشابه للكسر ، إلا أنه يتجاهل الحلقة الحالية وينتقل إلى الحلقة التالية.

# أنشئ حلقة ستخصص الأرقام من 1 إلى 5 # لكل "منعطف في الحلقة" للعداد في 1 2 3 4 5 do # إذا كانت قيمة العداد تساوي 3 إذا [$ counter –eq 3] ثم # استمر يمنع تحليل بقية الدورة الحالية من خلال القفز إلى الجولة التالية ، أي لن تتم طباعة # القيمة 3. استمر في تنفيذ صدى "$ counter"

أعلن: أعلن عن المتغيرات وعيّن قيمًا لها ، تمامًا مثل التنضيد (تعمل بنفس الطريقة). يمكننا دمجها مع بعض الخيارات: -i أعلن الأعداد الصحيحة ؛ -r لمتغيرات القراءة فقط ، التي لا يمكن تغيير قيمتها ؛ - أ للمصفوفات أو "المصفوفات" ؛ -f للوظائف ؛ -x للمتغيرات التي يمكن "تصديرها" خارج بيئة البرنامج النصي نفسه.

أعلن –i num = 12 أعلن –x pi = 3.14

help: تظهر المساعدة لأمر معين.

الوظائف: توضح العمليات الجارية.

#With –c نعرض اسم الأوامر ، مع –p # pid (معرف العملية) لكل عملية. وظائف -cp

اسمحوا: تقييم تعبير حسابي

دع a = 11 دع a = a + 5 # أخيرًا نطبع قيمة a وهي 16 echo "11 + 5 = $ a"

محلي: إنشاء متغيرات محلية ، ويفضل استخدامها في وظائف البرنامج النصي نفسه لتجنب الأخطاء. يمكنك استخدام نفس وظائف أمر التصريح.

local v1 = "هذا متغير محلي"

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

printf: يسمح لك بطباعة البيانات وتنسيقها. لديها العديد من الخيارات ، لذلك سنذكر القليل منها.

#٪ f يطبع كرقم عائم ، n لـ # سطر جديد printf "٪ fn" 5 5.000000 # & d يسمح بتمرير الأرقام العشرية كوسيطات printf "هناك٪ d طلبات بقيمة٪ d بالدولار.n" 20 هناك 500 طلبًا بقيمة 20 دولار.

القراءة: اقرأ سطرًا من الإدخال القياسي (الوحدة النمطية المستخدمة في تحميل البيانات عبر لوحة المفاتيح على سبيل المثال). يمكننا تمرير خيارات مثل: -t لإعطاء وقت محدد للقراءة ؛ -a بحيث يتم تعيين كل كلمة لموضع في مصفوفة aname ؛ -د استخدام محدد يكتب في نهاية السطر ؛ من بين أمور أخرى.

صدى "أدخل اسمك واضغط على ENTER" # اقرأ اسم المتغير اقرأ الاسم صدى "اسمك هو $ name"

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

يخبرنا type –a '[' #type أن [أمر مدمج في Shell [عبارة عن أمر Shell مدمج # -a يسمح بإيجاد المجلدات التي تحتوي على # ملف تنفيذي مع إدخال الاسم. [is / usr / bin / [

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

# نحن نرى حدودنا الحالية ulimit –a # -f يسمح بتحديد المستخدمين لعدم القدرة على # إنشاء ملفات أكبر من 512000 كيلو بايت (500 # ميجابايت) ulimit –f 512000 # -v يحد من الذاكرة الظاهرية للعملية. ulimit –v 512000

انتظر: انتظر حتى يتم تنفيذ عملية أو مهمة معينة للمتابعة.

# البرنامج النصي ينتظر تنفيذ عملية pid # 2585

انتظر 2585

يتم تمثيل الأوامر المفيدة الأخرى التي يمكننا إضافتها إلى البرامج النصية برموز.

!!: قم بتشغيل الأمر الأخير مرة أخرى

! wer: ينفذ الأمر الأخير الذي بدأ بالتعبير "wer".

'==' و '! =' و '>' و '<' و '> =' و '<=': العوامل العلائقية.

|: يستخدم عامل التشغيل OR بشكل عام لضم تعبيرين عاديين.

: أمر escape الذي يسمح لك بتنسيق التعبيرات. على سبيل المثال: a لتنبيه صوتي ، n لـ newline ، b لـ backspace ، إلخ.

شكرا لك خوان كارلوس أورتيز!