بحث
توقف عن النسخ واللصق: أنشئ سكربتات شل قابلة لإعادة الاستخدام
البرمجة #سكربتات_شل #سطر_الأوامر

توقف عن النسخ واللصق: أنشئ سكربتات شل قابلة لإعادة الاستخدام

تاريخ النشر: آخر تحديث: 8 مشاهدة 0 تعليق 5 دقائق قراءة
8 مشاهدة
0 إعجاب
0 تعليق
موثوق 95%

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

تعرف على بيئة الشل الخاصة بك

إذا كنت تنوي الانخراط في برمجة سكربتات الشل بجدية، فستحتاج إلى فهم عميق لبيئة الشل التي تستخدمها. في الغالب، سيكون الشل الخاص بك هو Bash، ولكن قد يكون Zsh، أو حتى الشل الأصلي القديم sh (Thompson shell). قد تكون قد قمت بتغيير الشل الخاص بك إلى شيء آخر تماماً، مثل Dash أو Fish. أياً كان الشل الذي تستخدمه، يجب عليك قراءة دليله للتعرف على صيغته وقدراته. تتوافق أنظمة الشل المتوافقة مع POSIX — مثل Bash وKsh وZsh — إلى حد كبير، ولكن قد يقدم كل منها ميزات خاصة به.

حدد المهام المتكررة: أين تبدأ؟

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

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

history | sed 's/^ *[0-9]* *//' | cut -d' ' -f1 | sort | uniq -c | sort -n

إذا كنت تستخدم Zsh، فغيّر هذا الأمر إلى history 0 | ....

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

history | sed 's/^ *[0-9]* *//' | cut -d' ' -f1- | grep ^man | sort | uniq -c | sort -n

على سبيل المثال، يخبرني هذا الأمر على نظامي أنني أستخدم man للحصول على المساعدة بشأن cp وgit وstrftime وjq وls بكثرة. أعلم أن أمر ls له العديد من الخيارات، لذا فإن أي سكربتات يمكنني كتابتها للمساعدة في تغليف بعض الخيارات الأكثر غموضاً ستكون ذات قيمة.

فن اختيار الأسماء الجيدة لسكربتاتك

لقد وجدت أن أحد أكبر العوائق أمام استبدال أمر أو استخدام برنامج جديد هو ببساطة تذكره. أمر ls محفور في ذاكرتي العضلية، لكنني أجد eza، وهو بديل حديث، غامضاً جداً لأتذكره؛ هذا الاسم لا يوحي لي بـ "قائمة الملفات".

هناك طرق للتعامل مع هذا الأمر بالنسبة للبرامج الخارجية. يمكنك استخدام اسم مستعار (alias) على سبيل المثال:

alias list=eza
  • **الأسماء الأقصر** أسهل دائماً في التعامل معها، بشرط أن تتمكن من ربطها بالمهمة التي يقوم بها السكربت.
  • **الأسماء التي تستفيد من المعرفة الموجودة** مريحة. برنامج lsd هو بديل آخر لـ ls يسهل تذكره؛ حتى أنه يستفيد من الإكمال التلقائي (tab completion).
  • إذا كان لسكربت خاص بك بادئة قصيرة وفريدة، فسيكون من الأسهل إكماله تلقائياً. يحتوي نظامي على أكثر من 60 أمراً تبدأ بـ "co"، ولكن 12 فقط تبدأ بـ "q" — وأحد هذه الأوامر هو سكربتي الخاص!
  • يجب أن تكون أسماء السكربتات دائماً **بالأحرف الصغيرة**. لا توجد طريقة أفضل لفقدان سكربت من إعطائه حرفاً كبيراً في البداية.
  • **فضل الأوامر بدون امتداد**. إذا قمت بحفظ سكربت باسم foo.sh، فأنشئ اسماً مستعاراً أو رابطاً رمزياً باسم "foo". هذا ليس أنظف فحسب، بل يسهل أيضاً تغيير الامتداد — إذا قمت بإعادة كتابة السكربت بلغة أخرى، على سبيل المثال.

تنظيم سكربتات الشل الخاصة بك

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

  • إذا كنت تكتب سكربتات ليقوم عدة مستخدمين بتشغيلها على نظام واحد، فيجب عليك وضعها في /usr/local/bin. يتبع هذا بنية دليل لينكس القياسية.
  • السكربتات الشخصية الخاصة بك تنتمي إلى دليلك الرئيسي، وليس إلى دليل عام مثل /bin أو /usr/bin. كان الموقع التقليدي هو ~/bin، والذي قد تحتاج إلى إنشائه. إذا كنت لا تحب رؤية الكثير من الدلائل في مجلدك الرئيسي، يمكنك استخدام دليل مخفي بدلاً من ذلك: ~/.bin.
  • أحدث اتفاقية هي اتباع مواصفات XDG واستخدام مجلد مثل ~/.local/bin. قد يكون لديك هذا الدليل بالفعل، حتى لو لم تكن على علم بذلك، مع وجود برامج خارجية بداخله.

استخدام الدوال (Functions) لكود قابل للصيانة

توجد صيغتان رئيسيتان للإعلان عن دالة (function):

foo() { } function foo { }

أوصي بالنمط الأول، فهو أقصر قليلاً وأكثر توافقاً. مع أي من النمطين، ستتمكن من الوصول إلى المعلمات بنفس الطريقة التي يصل بها سكربتك الرئيسي، أي باستخدام $1 للمعلمة الأولى، و$2 للثانية، وهكذا. يمكنك استدعاء دالة بنفس الطريقة التي تستدعي بها أي أمر:

foo param1 param2

ميزة أخرى لكتابة الدوال هي أنه يمكنك إعادة استخدامها عبر السكربتات، وكذلك داخلها. يمكنك استيراد ملف يحتوي على دوال الشل عن طريق استدعائه (sourcing):

. ./shell-functions.sh

أهمية التعليقات في السكربتات

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

في سكربتات الشل، تبدأ التعليقات بالرمز #. يمكن أن تظهر في أي مكان على السطر وتستمر دائماً حتى نهاية السطر:

# $1 the post URL twitter() { }

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

الأسئلة الشائعة

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

يمكنك استخدام أمر `history` لتحليل الأوامر التي تستخدمها بكثرة، ومن ثم التركيز على أتمتة المهام الأكثر تكراراً أو تعقيداً.

يُفضل وضع السكربتات الشخصية في دليل `~/bin` أو `~/.local/bin` ضمن مجلدك الرئيسي، لضمان سهولة الوصول إليها دون تلوث الدلائل العامة.

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

التعليقات 0

سجل دخولك لإضافة تعليق

لا توجد تعليقات بعد. كن أول من يعلق!