قم بإنشاء البرامج النصية الخاصة بك باستخدام bash

تعلم لينكس

بغض النظر عن توزيع Linux الذي نستخدمه ، لا شك في أن المفضل لدي هو Ubuntu― بمجرد أن ندخل في استخدام هذا النظام ، بالتأكيد احتياجات الأتمتة. وهذا هو: إنشاء ملف الأوامر الخاصة التي تؤدي أوامر معينة بطريقة مخصصة. يمكن أن تكون هذه الحاجة بسبب بعض الأسباب:

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

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

$ mkdir /home/pedro/.bin

أنا أؤمن بهذا الدليل (مخفي ببدء النقطة أمام الاسم) لعقد جميع النصوص التي أستخدمها هناك. لا معنى لإخفاء اسم الدليل سوى - ما لم يُذكر خلاف ذلك صراحة - لن يظهر عند عرض / home / pedro من عارض الملفات في الوضع الرسومي.

الآن عليك أخبر Linux أنه يجب أن يبحث هناك أيضًا (/home/pedro/.bin) الأوامر التي يتم تنفيذها من المحطة.

$ PATH=$PATH;/home/pedro/.bin

بهذه الطريقة سيبحث النظام عن طلباتنا هناك حتى نغلق الجلسة. لجعل هذه الرابطة دائمة:

$ sudo nano /etc/environment

ونضيف

:/home/pedro/.bin

في نهاية سطر PATH ، من المهم جدًا ألا تنسى النقطتين قبل عنوان الدليل الذي نقوم بتضمينه ، نظرًا لأن هذه هي آلية الإضافة.

أول برنامج نصي خطوة بخطوة

نقوم بإنشاء ملفنا ، مثل هذا في حالتي:

$ touch ~/.bin/donde

ولتعديله ، يمكنك استخدام المحرر المفضل لديك أو اتباع هذا المؤشر:

$ gedit ~/.bin/donde &

ونضيف المحتوى التالي:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

تحليل السيناريو

خط الاتصال الأول لدينا «كوخ»(#! / Usr / bin / env bash) اطلب من Linux الإبلاغ حيث توجد قذيفة bash وأن ما يلي يتم تنفيذه حسب متطلبات باش. هذا الاحتياط من الملائم التأكد من ذلك تعمل البرامج النصية الخاصة بنا على أي تثبيت. ممكن آخر كوخ هو ضحك:

#!/bin/bash

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

السطر الثالث: كما ترى ، السطر الثاني هو if. لباش الشخصيات «$#« تحتوي على عدد المعلمات التي نمررها من سطر الأوامر. لذلك ، »إذا [$ # -lt 1] ؛» تعني حرفيًا "إذا كان عدد المعلمات أقل من 1".

الخط الرابع: ثم (الترجمة الحرفية من الإنجليزية: إذن) ، يُشار هنا إلى أن ما سيأتي بعد ذلك سيتم تنفيذها عند تقييم الشرط if كن صادق: بمعنى آخر ، عدد المعلمات أقل من 1 ، أي صفر.

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

الخط السادس: يشير إلى أنه سيتم تنفيذ ما يلي عندما يكون الشرط الذي أعلناه غير صحيح.

الخط السابع: Se قم بتشغيل الأمر «أين هو« مصحوبًا بالمحتوى الذي مررنا عليه المعلمة الأولى.

السطر الثامن: بـ «fi»يشير إلى أن الكتلة تنتهي if.

اختبار السيناريو لدينا

من المهم إضافة أذونات الكتابة إلى البرنامج النصي:

$ chmod -x ~/.bin/donde

بدون ذلك ، سيظهر خطأ "تم رفض الإذن".. بعد ذلك ، يمكننا تشغيل البرنامج النصي الخاص بنا.

$ donde php

يجب أن يوضح لنا موقع ملفات php الثنائية ، وملفات المصدر ، وصفحات الدليل. شيء من هذا القبيل:

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

خلاصة

  • نقوم بتمكين أ دليل ".bin" لإيواء البرامج النصية الخاصة بنا.
  • نحن نقدم معلومات إلى Linux لتضمين هذا الدليل في عمليات بحث الأوامر الخاصة به.
  • نصنع السيناريو الخاص بنا.
  • الفرق بين مختلف كوخ.
  • استخدام عدد المعلمات التي تم تمريرها بـ # دولار.
  • استخدام المعلمة الأولى مع $1.

آمل وأتمنى أن يكون هذا السيناريو مفيدًا لك.


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

اترك تعليقك

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

*

*

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

  1.   ميجيل قال

    جيد جدًا وموضح جيدًا ، ولكن إلى ماذا تشير المعلمة؟

    1.    صورة Pedro Ruiz Hidalgo قال

      ميغيل شكرا!

      أفهم من خلال المعلمة جميع المعلومات التكميلية التي يتم توفيرها لبرنامج أو وظيفة أو نظام. نظرًا لأن هذا قد يكون مرهقًا ، دعني أجيب عليك ببعض الأمثلة.

      في أمر linux لنسخ الملف a.txt إلى الملف b.txt ، نكتب ما يلي:

      $cp أ.txt ب.txt

      يتلقى برنامج cp هنا معلمتين هما اسم ملفين ، الأول (يجب أن يكون) a.txt والثاني b.txt.

      مثال آخر: إذا قمت بالإرسال للطباعة من وحدة التحكم باستخدام الأمر

      ملف $ lp.pdf

      في هذه الحالة "file.pdf" هو معامل لبرنامج lp.

      آمل أن أكون قد أرضيت شكوكك.

      تحياتي

  2.   ميجيل قال

    تعليقاتي لا تخرج ، إنه عدم احترام ، لا أعود إلى هذا المنتدى مرة أخرى.

    1.    صورة Pedro Ruiz Hidalgo قال

      لا أعرف ما حدث ، على أي حال تم نشر هذا.

      تحية.