اذهب إلى المحتوى

إنشاء أمر جديد في بيئة سطر الأوامر في راسبيري باي


أروى عفان

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

كما تعلمنا في مقال سابق فإن حاسوب راسبيري باي يستخدم نظام التشغيل راسبيان، والذي يعتمد لغة البرمجة النصية باش Bash. عندما نكتب أوامر في الطرفية Terminal، فنحن نستخدم أوامر Bash. يمكن وضع عدة أوامر في ملف لإنشاء برنامج نصي (سكربت) مَبني باستخدام لغة البرمجة Bash، وهذا يُتيح لنا إنشاء أمر جديد يكتب في الطرفية أو يشغل من القائمة الرئيسية.

ستعمل في هذا المقال على كتابة برنامج نصي يمكن تشغيله كأمر من الطرفية أو من القائمة الرئيسية كما في المثال التالي:

command-showcase.gif

ستحتاج خلال هذا المقال إلى:

  • عتاديات: حاسوب راسبيري باي.
  • برمجيات: نسخة حديثة من نظام التشغيل راسبيان Raspbian (الإصدار Buster، أو الإصدارات الأحدث). إذ أن الإصدارات السابقة قد لا تدعم جميع وظائف Shell المستخدمة في هذا المشروع إلا عند تحديث الطرفية.

ستتعلم في هذا المقال:

  • كيف تستخدم أوامر Bash التالية: echo وdate وsleep.
  • كيف تستخدم محرر النصوص البرمجية Geany لإنشاء سكربت.
  • كيف تضيف أمرًا جديدًا إلى واجهة سطح المكتب والقائمة الرئيسية.

ما هو الأمر Command؟

الأوامر هي تعليمات تُكتب في الطرفية لتنفيذ مهمة ما.

افتح واجهة الطرفية من شريط المهام، سيظهر لك موجه الأوامر prompt.

command-terminal.png

يوجد العديد من الأوامر التي تُكتب في الطرفية. منها أمر الطباعة echo الذي يطبع النص المُدخَل على الشاشة.

اكتب الأمر echo في الطرفية، ثم اضغط على زر الإدخال Enter:

echo Hello World

يجب أن يظهر النص "Hello World" في واجهة الطرفية، متبوعًا بالموجه حتى تتمكن من إدخال أمر آخر:

command-hello-world-output.png

الآن، استخدم الأمر echo لطباعة نص من اختيارك، بدلًا عن "Hello World".

عند كتابة علامة اقتباس أحادية في النص، فسترى الموجه < وكأنك لم تنهِ كتابة الأمر.

echo It's Monday

command-prompt.png

أدخل علامة اقتباس أخرى لإكمال الأمر وطباعة النص كاملًا.

monday_apostophe.png

اضغط مع الاستمرار على مفتاحي Ctrl و C لإلغاء الأمر.

monday_controlC.png

لطباعة علامة الفاصلة (علامة اقتباس أحادية)، اكتب النص ضمن علامات اقتباس مزدوجة.

echo  It's Monday

لكن ماذا لو لم يكن اليوم هو الاثنين؟ يُتيح لك الأمر date طباعة التاريخ الصحيح على الشاشة:

date

يُظهر هذا الأمر التاريخ الكامل. لمعرفة اليوم، اضف الرمز + متبوعًا بخيارات تنسيق التاريخ للحصول على جزء منه. اضف الرمز + ثم A% للحصول على اسم اليوم بلغتك المحلية.

date +%A

يمكن تضمين أمر آخر في أمر الطباعة echo بكتابته بين ( )$:

echo "It's $(date +%A)"

معلومة: استخدم الأمر date --help لتصفح الخيارات المتاحة لتنسيق التاريخ باستخدام الأمر date.

إنشاء أمر جديد

بعد استخدام أمري echo و date، سنتعلم كيفية إنشاء أمر جديد من خلال دمج عدة أوامر وكتابتها في ملف. سنستخدم محرر النصوص Geany Programmer’s Editor لكتابة سكربت برمجي يمكن استخدامه فيما بعد كأمر.مما يفيد عند كتابة سلسلة طويلة أو معقدة من الأوامر.

افتح محرر النصوص Geany من سطر الأوامر باستخدام الأمر التالي:

geany welcome.sh &

ينشىء هذا الأمر ملفًا جديدًا باسم Welcome وعند استخدام اللاحقة sh. يفهم المحرر Geany أننا نكتب سكربت صدفة Shell (واختصارًا sh) بلغة bash وذلك لكي يميز النصوص بألوان مختلفة وفقًا لتلك اللغة ويساعدنا في تنفيذ السكربت.

يَدُل استخدام الرمز & في نهاية السطر أننا نريد كتابة المزيد من الأوامر بينما لا يزال Geany قيد التشغيل، أي جعل Geany يعمل في الخلفية، جرب تشغليه دون & ولاحظ الفرق.

Geany.png

اقتباس

ملاحظة: يمكن فتح Geany عن طريق النقر على شعار راسبيري في الزاوية العلوية اليسرى من الشاشة لفتح القائمة الرئيسية، ثم النقر على البرمجة Programming ثم Geany Programmer’s Editor.

أضف الأسطر التالية إلى السكربت:

#!/bin/bash
echo "It's $(date +%A)"

يوضح السطر الأول أن هذا السكربت يستخدم لغة Bash البرمجية.

لتنفيذ الأمر، اضغط على المفتاح F5 أو زر التشغيل Run (يُرمز له بطائرة ورقية). سيُحفظ الملف تلقائيًا.

ستظهر واجهة الطرفية لتنفيذ الأمر البرمجي. وستظهر رسالة خطأ رفض إذن الوصول Permission denied مفادها أنه ليس لديك صلاحية لتشغيل النص كأمر.

command-denied.png

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

اكتب الأمر التالي في الطرفية لاستعراض خصائص السكربت welcom.sh:

ls -l welcome.sh

ستلاحظ أن الملف له الصلاحيات التالية ‎-rw-r--r--‎.

عمومًا، يوجد ثلاثة أنواع من الصلاحيات: صلاحية القراءة read، وصلاحية الكتابة write، وصلاحية التنفيذ execute. تُسند هذه الصلاحيات إليك كمستخدم أو user، وإلى مجموعة ما group، وإلى الجميع other.

يُسمح للمستخدم user القراءة والكتابة على الملف، دون التنفيذ.

استخدم الأمر التالي لإضافة صلاحية التنفيذ x للمستخدم:

chmod u+x welcome.sh

يسمح هذا الأمرchmod للمستخدم user بتنفيذ execute الملف welcome.sh بمحتوياته كأمر برمجي.

الأمرchmod هو اختصار للتعليمة 'change mode'، أي غَيّر النمط.

أعد كتابة الأمر ls -l لاستعراض خصائص السكربت welcome.sh:

ls -l welcome.sh

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

ستلاحظ أن المستخدم أصبح لديه صلاحية التنفيذ x:

-rwxr--r--

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

في محرر Geany، انقر على زر التشغيل Run، أو اضغط المفتاح F5. ستظهر واجهة الطرفية وعليها خرج السكربت بعد تنفيذه.

command-output.png

أضف السطر التالي إلى بداية السكربت بعد أول سطر:

echo "Welcome to $HOSTNAME"

يمكن أن يستخدم السكربت متغيرات البيئة مثل اسم المضيف HOSTNAME$ للوصول إلى المعلومات.

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

command-change-hostname.png

يجب إعادة إقلاع الراسبيري ليتغير الاسم. اغلق كل النوافذ المفتوحة بالنقر على رمز x في الزاوية العلوية اليمنى ثم اختر إيقاف التشغيل Shutdown ثم إعادة إقلاع Reboot.

بعد إعادة الإقلاع، افتح المحرر Geany وانقر على تبويبة File ثمOpen واختر الملف welcome.sh ثم اضغط على مفتاح F5 لتنفيذ السكربت. ستلاحظ ظهور اسم المضيف الجديد على الشاشة.

يُعد الأمر sleep من الأوامر المفيدة، إذ يمكن استخدامه للانتظار بضعة ثوان قبل تنفيذ الأمر التالي، مثلًا:

sleep 1

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

#!/bin/bash
echo "It's $(date +%A)"
sleep 1
echo "Welcome to $HOSTNAME"

إضافة تأثيرات للنص

سنضيف بعض تأثيرات النص، مثل تغيير لون النص واستخدام التسطير والخط المائل والميزات الأخرى.

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

افتح واجهة الطرفية واكتب الأمر التالي لإظهار كلمة Welcome باللون الأخضر:

echo -e "\e[32mWelcome"

command-green-text.png

يُوجه الخيار e- أمر الطباعة echo للبحث عن تسلسلات هروب بشرطة مائلة عكسية قبلها. هذه السلاسل هي محارف ذات معنى خاص؛ على سبيل المثال، n\ تعني "طباعة سطر جديد".

يُوجه القسم ‎\e[ ... m أمر الطباعة echo إلى أنه يجب معاملة الأحرف التالية على أنها رمز خاص، ويدُل الرقم 32 أن لون النص يجب أن يكون أخضر، إذ تُستخدم الأرقام من 31 إلى 37 للحصول على ألوان مختلفة. جرّب ذلك.

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

لنكتب الآن الرسالة مرحبًا "Hello" بالنص البرتقالي.

سنحتاج لتغيير الرقم 32 إلى 33:

echo -e "\e[33mWelcome"

يمكن استخدام أمر ثانٍ للحصول على لون آخر:

echo -e "\e[33mHello \e[35mWorld"

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

للحصول على نص ثخين، استخدم الرقم 1 كما يلي:

echo -e "\e[1;33mHello \e[35mWorld"

بإضافة الرقم 0 على الأمر السابق نحصل على نص عادي، وأخر ثخين.

echo -e "\e[1;33mHello \e[0;35mWorld"

لإعادة التأثيرات إلى الوضع الافتراضي، استخدم \e[0m

حان دورك الآن، جرب تنسيق نص في سطر الأوامر مثل ماهو موضح في الصورة التالية (لا تنسى تعديل اسم المضيف واليوم):

command-welcome-coloured.png

يجب أن يبدو الأمر كما يلي:

echo -e "\e[33mWelcome to \e[1;33m$HOSTNAME"
echo -e "\e[0;35mIt's \e[1;35m$(date +%A)"

تخصيص أمر

تعلمنا استخدام الرقم 0 للحصول على نص عادي، والرقم 1 للحصول على نص ثخين.

إليك استخدامات الأرقام الأخرى:

  • الرقم 2: يُستخدم للنص الغامق/الباهت.
  • الرقم 3: يُستخدم للنص المائل.
  • الرقم 4: يُستخدم للنص الذي تحته خط.
  • الرقم 5: يُستخدم للنص الوامض.
  • الرقم 7: يُستخدم للفيديو العكسي (تبديل الألوان الخلفية والألوان الأمامية).
  • الرقم 9: يُستخدم للنص ~~الذي يتوسطه خط~~

ينشئ الأمر التالي نصًا أحمر اللون ثخينًا تحته خط:

echo -e "\e[1;3;4;31mHello"

وَظّف ما تعلمته لإنشاء أمر يظهر رسالة ترحيبية "Welcome" ملونة ومنسقة وفق تنسيقك المفضل مما تعلمناه سابقًا. يمكنك كتابة اقتباس ملهم أو استخدام أمر التاريخ date لإظهار الوقت.

إضافة أمر إلى قائمة أوامر الطرفية

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

افتح القائمة الرئيسية وانقر على تفضيلات preferences ثم محرر القائمة الرئيسية Main Menu Editor

command-menu-editor.png

انقر فوق أخرى other ثم اختر عنصر جديد new item. بعدها اكتب اسم الأمر Welcome في مربع الاسم Name.

انقر فوق تصفح Browse واختر السكربت welcome.sh. إن لم تجده في "ملفات تم الوصول إليها مؤخرًا" Recent؛ فانقر فوق الصفحة الرئيسية Home للعثور عليه. وأضف التعليق: "إظهار رسالة ترحيب" في مربع التعليق.

انقر على مربع تشغيل في الطرفية لتفعيل الخيار، ثم انقر فوق موافق OK.

command-welcome-menu-item.png

افتح القائمة الرئيسية ثم انقر فوق أخرى other لاستعراض الأمر.

command-welcome-menu.png

لاحظ أنه عند تمرير مؤشر الفأرة فوق الأمر، سيظهر التعليق الذي أضفته "إظهار رسالة ترحيب".

شَغّل أمر الترحيب Welcome. إذا أمعنت النظر، ستلاحظ ظهور نافذة الطرفية (سطر الأوامر) واختفائها بسرعة. السبب هو تنفيذ أمر الترحيب وإغلاق النافذة بسرعة بعدها، لذلك لن تستطيع رؤية الخرج.

لمعالجة هذه المشكلة، نضيف سطرًا يجعل السكربت ينتظر منا الضغط على أي مفتاح قبل الخروج:

read -n 1

الأمر read هو أحد أوامر لغة Bash، يقبل عددًا من المحارف كمدخلات له.

نَفذ السكربت من القائمة الرئيسية مرة أخرى، ستلاحظ عرض الخرج في نافذة الطرفية، وانقر فوق مفتاح المسافة Space أو مفتاح Enter أو أي مفتاح آخر لإغلاق النافذة.

كما يمكن إضافة الأمر إلى واجهة سطح المكتب عن طريق اختيار أخرىother من القائمة الرئيسية، ثم النقر بزر الفأرة الأيمن على أمر الترحيب Welcome واختيار إضافة إلى سطح المكتب Add to desktop.

command-welcome-add.png

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

command-welcome-desktop.png

انقر فوق أيقونة الترحيب Welcome واختر تنفيذ Execute لتشغيل الأمر.

command-welcome-desktop-execute.png

ألوان إضافية

تُتيح بعض واجهات الطرفية، بما في ذلك واجهة الطرفية الافتراضية المتاحة في نظام راسبيان استخدام المزيد من الألوان.

يمكن الاختيار من بين 256 لون مختلف مرقمة من 0 (للون الأسود) إلى 255 (للون الأبيض).

جرب الأمر التالي:

echo -e "\e[38;5;99mPurple"

ينص الجزء 38;5 من الكود على أننا نريد استخدام لون يمتد إلى نص المقدمة. أما الرقم 99 فيعبر عن ظل أرجواني.

جرب بعض الأرقام الأخرى من 0 إلى 255.

تُتيح لنا لغة Bash كتابة سكربتات معقدة. لتجربة ذلك، اتبع الخطوات التالية:

  1. أنشىء ملف Geany جديد باسم bash-colours.sh. ذكرنا الخطوات سابقًا في فقرة إنشاء أمر جديد
  2. احرص على جعل السكربت قابلًا للتنفيذ.
  3. استخدم حلقة For لطباعة كل الألوان. عن طريق إضافة الأسطر التالية:
#!/bin/bash
for i in {0..255} ; do echo -en "\e[38;5;${i}m ${i} \e[0m" ; done ; echo

تنفذ حلقة for أمر الطباعة echo مرة لكل لون من المجال من 0 إلى 255.

يوجه الخيار n- أمر الطباعة echo إلى عدم طباعة سطر جديد بعد كل أمر.

يطبع أمر الطباعة الأخير echo سطرًا جديدًا حتى تظهر واجهة الطرفية. (جرب تنفيذ الأمر بدون أمر الطباعة الأخير echo) ثم شَغّل السكربت بالنقر على زر التشغيل run من موجه الأوامر أو بالضغط على مفتاح F5.

سيظهر الخرج على الشكل التالي:

command-256-foreground.png

إذا استخدمت 48;5 بدلًا عن 38;5، سيتغير لون الخلفية بدلاً من لون المقدمة (لون النص). غَيّر السكربت لعرض كامل مجال ألوان الخلفية.

يجب أن يبدو الخرج كما يلي:

command-256-background.png

بعد تعديل السكربت كالتالي:

#!/bin/bash
for i in {0..255} ; do echo -en "\e[48;5;${i}m ${i} \e[0m" ; done ; echo

غيرنا اللون من 38 إلى 48 فقط.

أضف الأمر إلى البرامج الملحقة Accessories من القائمة الرئيسية. راجع الفقرة السابقة، إن احتجت لذلك.

command-colours-menu.png

احرص على أن ينتظر السكربت الضغط على أي مفتاح قبل الخروج:

read -n 1

إضافة أيقونة للأمر

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

يمكن إنشاء أيقونة مخصصة للسكربت bash-colours.sh، إذ أن الاختيار الصائب للأيقونة يعطي فكرةً عن عمل السكربت أو ماهيته.

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

أولًا شَغّل الأمر من محرر Geany من القائمة الرئيسية، ثم صَغّر النافذة بحث تظهر الخرج المُلون فقط، كما يلي:

command-colours-output.png

ابقِ النافذة مفتوحة فسوف نحتاجها لاحقًا.

اضغط على مفتاح طباعة الشاشة Print screen من لوحة المفاتيح للحصول على لقطة شاشة. ستجد بعدها ملف صورة جديد في مجلد الصفحة الرئيسية Home.

انقر على البرامج الملحقة accessories من القائمة الرئيسية، ثم مستعرض الصور Image Viewer. ستظهر الصورة التي أنشأتها. اضغط على مفتاح السهم الأيمن للتنقل بين الصور.

عند الضغط على مفتاح طباعة الشاشة Print screen يُشغل أمر يدعى scrot (اختصارًا للقطة شاشة screen shot).

جرب استخدام الأمر scrot:

scrot

ثم افتح مستعرض الصور لمشاهدة ملف الصورة. يمكن أيضًا أخذ لقطة شاشة لنافذة واحدة باستخدام المُحَدِد s- بعد الأمر scrot ثم النقر على نافذة الخرج.

scrot -s

يمكن تحديد اسم ملف الصورة من الأمر نفسه:

scrot bash-colours.jpg -s

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

scrot bash-colours.jpg -t 10 -s

تضمن الراية 10 t- إنشاء صورة مصغرة بحجم 10% من لقطة الشاشة لها الاسم bash-colours-thumb.jpg.

افتح محرر القائمة الرئيسية Main Menu Editor من تفضيلات preferences من القائمة الرئيسية، واختر ألوان Bash أو Bash Colours، ثم انقر على خصائص Properties.

انقر فوق أيقونة الصورة وحدد المجلد الرئيسي home، ثم اختر bash-colours-thumb.jpg وانقر فوق موافق OK.

command-set-icon.png

من القائمة الرئيسية، انقر على قائمة البرامج الملحقة accessories لرؤية الأيقونة الجديدة.

command-menu-icon.png

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

command-desktop-icon.png

تحدي إنشاء أمر جديد

هل يمكن إنشاء أمر جديد مفيد؟ تُعد السكربتات مفيدة جدًا في حال تنفيذ أوامر تحتاج وسائط أو محددات، أو عند تنفيذ عدة أوامر بالترتيب.

أنشىء صورة باستخدام محرر رسوميات تألف التعامل معه. يمكن تصدير الأنماط من محرر الرسوم Paint editor في برنامج سكراتش Scratch واستخدامها.

إليك بعض الاقتراحات:

  • hostname -i يظهر هذا الأمر عنوان IP حاسوب راسبيري باي الذي يمكن استخدامه للاتصال عن بعد بحاسوبك.
  • cal يظهر هذا الأمر تقويم الشهر الحالي مع تحديد اليوم. استخدم الأمر man call لإستعراض الخيارات المتاحة.
  • cat /proc/device-tree/model يظهر هذا الأمر معلومات عن حاسوب. في حين أن الأمرcat يستخدم لعرض محتويات ملف ما. عَدل الخيارات المستخدمة مع الأمر وأضفه إلى القائمة.
  • أنشىء اختبار تأثير ستروب Stroop effect (اختبار تسمية الكلمات بالألوان). حيث تطبع كلمات بألوان مختلفة ويجب عليك ذكر اسم اللون وليس الكلمة.
  • أنشىء تنسيقًا للأمر scrot لأخذ لقطة شاشة لنافذة معينة وإنشاء صورة مصغرة عنها.
  • أنشئ لوحة من البكسلات Pixels الملونة عن طريق تغيير لون الخلفية وطباعة مسافات بينها.

ختامًا

بهذا تكون قد انتهيت من المقال الخامس من سلسلة مقالات تمهيدية تُساعدك على العمل بسهولة مع راسبيري باي.

ترجمة -وبتصرف- للمقال Create a new command on Raspberry Pi من موقع راسبيري باي الرسمي.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...