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

بينما نستخدمه بشكل عام لعمليات الإدارة أو إدارة الملفات ، فإن ملف راحة 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 ، إلخ.

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

محتوى المقال يلتزم بمبادئنا أخلاقيات التحرير. للإبلاغ عن خطأ انقر فوق هنا.

10 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   متوسط ​​صعب قال

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

  2.   لنستخدم لينكس قال

    مساهمة جيدة! عظيم!

  3.   جيوفاني اسكوبار سوسا قال

    فقط مراجع مفقودة لأولئك الذين يريدون الحصول على المزيد في هذه المسألة. بعض الأشياء الجيدة رغم أنه ليس من السهل العثور عليها في بلادنا
    - دليل عملي لأوامر Linux والمحررين وبرمجة Shell ، مارك سوبيل (الفصل 8)
    - Pro Bash Programming ، Chris FA Johnson (على الرغم من أن هذا مخصص لأولئك الذين لديهم مراجع أخرى أو القليل من المعرفة).

    مقالة جيدة.

  4.   لنستخدم لينكس قال

    موعد جيد! شكرا!

  5.   باتريسيو دورانتيس جامارن قال

    : @ حذفت وظيفة "تسجيل الدخول كـ" تعليقي السابق ، لذا سألخصها أكثر:
    وظائف -cp
    باش: الوظائف: -ج: خيار غير صالح
    jobs: Usage: jobs [-lnprs] [jobspec…] أو الأمر jobs -x [args]

    -eq -gt -lt لا أقبل متغيرات الفاصلة العشرية ، بين المنتدى والمنتدى اكتشفت أن bc حليف جيد:
    إذا كان [`صدى 9.999> 10 | bc` -eq 1] ؛ ثم
    صدى "9.999 أكبر من 10 ، تأكد من أن المعالج لا يزال يعمل"
    آخر
    صدى «9.999 ليس أكبر من 10 ، كل شيء يعمل بشكل طبيعي
    fi

  6.   NotFromBrooklyn قال

    يلخص هذا المنشور بشكل جيد جميع العموميات الخاصة بـ bash scripting:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    ستجد في هذا الموقع العديد من الأسئلة والأجوبة حول خصائص باش:
    http://unix.stackexchange.com/questions/tagged/bash

    فيما يلي بعض النصوص الرائعة حقًا ، ويمكنك تعلمها من خلال قراءة نصوص الآخرين:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   NotFromBrooklyn قال

    أنت محق في ما تقوله باستثناء باش. كل نظام رأيته به bash in / bin / bash.

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

  8.   جيلي قال

    من قبيل الصدفة ، في الكلية نستخدم البرمجة النصية bash ، لذا فإن البيانات 10 ، جيدة جدًا!

  9.   اليكس السادس قال

    نسخة pdf للتحميل ستكون جيدة !! 😀

  10.   ماركو أنطونيو دي فوينتيس قال

    موقع جيد جدا. أخيرا وجدت شيئا مفيدا. شكرا.