نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

المصفوفات في Bash

إنشاء المصفوفات المصفوفة هي متغير يحتوي قيمًا متعددة، وأي متغير قد يُستخدم كمصفوفة، كذلك لا يوجد حد أقصى لحجم المصفوفة ولا يُشترط أن تُفهرس المتغيرات داخل المصفوفة أو تُعيَّن في وقت واحد، وقد تكون المصفوفات صفرية القاعدة أي يُفهرس أول عنصر برقم صفر. ينفَّذ التصريح غير المباشر عن المتغير (indirect declaration) باستخدام البنية اللغوية التالية: ARRAY[INDEXNR]=value يعامَل المفهرِس INDEXER على أنه تعبير حسابي يجب أن يٌقدَّر بعدد موجب، ويتم التصريح الواضح (explicit declaration) للمصفوفة باستخدام أمر declare: declare -a ARRAYNAME يُقبَل التصريح ...

مطابقة الأنماط باستخدام ميزات Bash

مدى المحارف Character Ranges خلافًا لأمر grep والتعابير النمطية (regular expressions) فإن لدينا حالات كثيرة لمطابقة الأنماط التي يمكنك إجراؤها في الصدفة مباشرة دون الحاجة إلى استخدام برنامج خارجي، فلعلك تعلم أن محرفي * و ? يطابقان أي نص أو محرف وحيد -على الترتيب-، ومن أجل مطابقة هذين المحرفيْن تحديدًا، ضع حول كل منهما علامات اقتباس مزدوجة: hsoub ~> touch "*" hsoub ~> ls "*" * يمكنك استخدام الأقواس المربعة لمطابقة أي محرف أو مجموعة محارف بداخل تلك الأقواس إن فُصلت أزواج المحارف ...

استخدام البُنية case

حالات مُبسطة قد يكون من السهل اللجوء إلى استخدام عبارات if لبداهة أسلوبها، لكن تلك السهولة تنقلب إلى حيرة حين تواجه بضعة اختيارات مختلفة لإجراءات محتملة يجب اتخاذها، ولمثل تلك الحالات نستخدم عبارة case، وبنيتها اللغوية هي كما يلي: case EXPRESSION in CASE1) COMMAND-LIST;; CASE2) COMMAND-LIST;; ... CASEN) COMMAND-LIST;; esac وتطابق كل حالة في التعبير السابق نمطًا (pattern)، وتُنفَّذ الأوامر التي في قائمة COMMAND-LIST لأول تطابق، ويُستخدم محرف الأنبوب | لفصل الأنماط المتعددة، وينهي معامِل ( قائمة الأنماط، ويُطلق اسم البند ...

القوسان {} المعقوصان في أردوينو

القوسان المعقوصان {} (curly braces، أو تدعى braces فقط أو curly brackets) هما جزء لا يتجزأ من لغة C. يستعملان في بُنى عديدة مثل بنى التحكم وغيرها وهذا يربك أحيانًا المبتدئين أثناء تعلمهم اللغة. يجب أن يُغلَق القوس المعقوص } الافتتاحي بالقوس المعقوص { الختامي دومًا. أي يجب أن تكون الأقواس المعقوصة في حالة توازن دائمة. تتضمن بيئة عمل أردوينو (Arduino IDE) ميزة التحقق من توازن الأقواس المعقوصة. حدِّد فقط أحد الأقواس المعقوصة أو اضغط على نقطة الإدخال التي تلي ...

تبديل الشرطيات بالتعدديّة الشكليّة (Replace Conditional with Polymorphism)

المشكلة وجود شروط تنفِّذ إجراءات مختلفة اعتمادًا على نوع الكائن أو خصائصه. الحل إنشاء أصناف فرعية مطابقة لفروع البنية الشرطية. ويُنشأ فيها تابع مشترك وتُنقل إليه الشيفرة البرمجية من الفرع المقابل من الشرطية. ثم تُستبدل البنية الشرطية باستدعاء التابع المناسب. وينتج عن ذلك تنفيذ سليم يتحقق من خلال التعدديّة الشكليّة اعتمادًا على صنف الكائن. مثال قبل إعادة التصميم الصنف Bird يحتوي على التابع getSpeed الذي باستعمال البنية الشرطية switch من النوع type لحساب السرعة بناءً على قيمته: في لغة Java: ...

توحيد الأجزاء الشرطية المكررة (Consolidate Duplicate Conditional Fragments)

المشكلة شيفرة برمجية متطابقة موجودة في جميع فروع الشَرطيات. الحل نقل الشيفرة البرمجية خارج الشَرطية. مثال قبل إعادة التصميم استدعاء وتنفيذ الدالة ()send في نهاية جميع فروع الكتلة if الشرطية سواءً أكان الشرط محققًا أم لا: في لغة Java: if (isSpecialDeal()) { total = price * 0.95; send(); } else { total = price * 0.98; send(); } في لغة C#‎: if (IsSpecialDeal()) { total = price * 0.95; Send(); } else { total = price * 0.98; ...

المزيد من خيارات Bash

ناقشنا بعض خيارات صدفة Bash التي قد تفيدك في تنقيح برامج Bash، وسننظر الآن في مزيد من تلك الخيارات بتفصيل أكثر. عرض الخيارات استخدم خيار o- لأمر set لعرض كل خيارات الصدفة: hsoub:~> set -o allexport off braceexpand on emacs ...

تنفيذ الأوامر في Bash

عام تحدد bash نوع البرنامج الذي يتم تنفيذه، وتكون البرامج هنا عادة أوامر للنظام في صورة مُجمّعة (compiled) على جهازك. وحين يتم تنفيذ أحد تلك البرامج، فإن bash تنشئ نسخة من نفسها، وتولد عملية جديدة بناء على ذلك، ويدعى ذلك الإجراء بالاشتقاق (forking). وتلك العملية الفرعية لديها نفس بيئة العملية الأصلية، ولا تختلفان إلا في رقم معرّف العملية (Process ID Number) لكل منهما. وتحِل بيانات العملية الجديدة محِل مساحة العنوان (address space) بعد الاشتقاق ، ويتم ذلك الإجراء من خلال ...

حلقة until في Bash

كيفية عمل حلقة until تشبه هذه الحلقةُ التكرارية حلقةَ while باستثناء أن الحلقة هنا تُنفَّذ إلى أن يُنفَّذ أمر اختباري TEST-COMMAND بنجاح، فتظل الحلقة عاملة طالما كان تنفيذ الأمر الاختباري يفشل. والبنية اللغوية لها تشبه البنية اللغوية لحلقة while : until TEST-COMMAND; do CONSEQUENT-COMMANDS; done وحالة الإعادة لهذه الحلقة هي نفسها حالة الخروج لآخر أمر يُنفَّذ من الأوامر التابعة CONSEQUENT-COMMANDS أو تكون صفرًا إن لم يُنفَّذ أي أمر. وقد يكون الأمر الاختباري TEST-COMMAND أي أمر يمكن أن يخرج بحالة نجاح أو فشل، ...

أنواع المتغيرات في Bash

التعيين العام للقيَم لم نركز كثيرًا في الشرح السابق لصدفة Bash على أنواع المتغيرات التي كنا نعيِّنها لأن Bash تستطيع التعامل مع أنواع متعددة من المتغيرات والمعامِلات، ونتيجة لذلك فإن متغيراتنا يمكنها احتواء أي نوع نختاره من البيانات، انظر المثال التالي للتوضيح: [hsoub in ~] VARIABLE=12 [hsoub in ~] echo $VARIABLE 12 [hsoub in ~] VARIABLE=string [hsoub in ~] echo $VARIABLE string وستكون حالات تريد فيها تجنب هذا السلوك من المثال السابق حين تتعامل مع أرقام الهواتف وغيرها مثلًا، وقد تحتاج أن تحدد متغيرًا ثابتًا (Constant ...

البُنى الشرطية في Bash

سنتعلم في هذا الباب كيف نبني سلاسل شرطية في برامجنا بحيث نستطيع اتخاذ إجراءات مختلفة بناء على نجاح الأوامر أو فشلها، وستُحدد تلك الإجراءات باستخدام عبارة if، وسيسمح هذا بتنفيذ مقارنات حسابية ونصية، واختبار رموز الخروج والمدخلات والملفات التي يحتاجها البرنامج. عادة ما يسبق الأوامر في برامج الصدفة اختبارُ if/then/fi لمنع إنشاء الخرج كي يعمل البرنامج في الخلفية أو من خلال أداة cron، أما الشروط الأكثر تعقيدًا فتوضع في عبارة case. ويخبر البرنامج الصدفة الأم عند نجاح اختبار الشرط باستخدام ...

المهام التكرارية في Bash

ستتعلم في هذا القسم كيف يمكن للأوامر المتكررة أن تندمج في حلقات تكرارية، وكيف تُبنى الحلقات التكرارية باستخدام عبارات for أو while أو until إحداها أو جميعها معًا، فحلقة for تنفذ مهمة ما عددًا محددًا من المرات، وإن كنت لا تعرف كم عدد مرات تنفيذ الأمر فاستخدم عبارة until أو while لتحديد متى يجب أن تتوقف الحلقة. ويمكن مقاطعة الحلقات أو إعادة تكرارها باستخدام عبارتي break و continue، كما يمكن استخدام ملف كمُدخَل لحلقة عبر معامل إعادة توجيه المدخلات، كذلك ...

اقتباس المحارف في Bash

فائدة اقتباس المحارف تحمل كثيرًا من المحارف والكلمات معاني ووظائف خاصة بشكل أو بآخر، ويُستخدم الاقتباس لإلغاء ذلك المعنى أو الوظيفة الخاصة، إذ تعطِّل علامات التنصيص في Bash تلك المعاملة التي يلقاها المحرف الخاص، وتمنع معاملة الكلمات الخاصة وفقًا للمعاني التي تحملها، وكذلك تعطِّل توسع المعامِلات. محارف الهروب تُستخدم محارف الهروب لإلغاء المعنى الخاص لمحرف واحد، وتُستخدم الشرطة المائلة الخلفية \ كمحرف للهروب في Bash، إذ تحتفظ بالمعنى المباشر للمحرف الذي يليها باستثناء محرف السطر الجديد، فإن أتى محرف سطر ...

التقاط الإشارات في Bash

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

حلقة while في Bash

كيفية عمل حلقة while تسمح حلقة while التكرارية بالتنفيذ المتكرر لقائمة أوامر طالما أن الأمر المتحكم في حلقة while يُنفَّذ بنجاح (حالة خروجه صفر). والبنية اللغوية لهذه الحلقة هي: while CONTROL-COMMAND; do CONSEQUENT-COMMANDS; done حيث يرمز CONTROL-COMMAND -وهو الأمر الذي سيتحكم في الحلقة- إلى أي أمر يخرج بحالة فشل أو نجاح، بينما قد تكون CONSEQUENT-COMMANDS -وهي الأوامر التي ستُكرَّر- أي برنامج أو برنامج للصدفة أو أحد بُنى الصدفة المختلفة. وتخرج الحلقة فور فشل الأمر المتحكِّم فيها، وإن كانت الحلقة في برنامج ...

تنقيح برامج Bash

التنقيح على مستوى البرنامج ككل حين تحدث مشكلة في البرنامج الذي كتبته فإنك في حاجة إلى وضع يدك على مكان المشكلة بالتحديد داخل الشيفرة، وتوفر Bash مزايا تنقيح شاملة لعل أشهرها هو بدء صدفة فرعية بخيار x- الذي سيبدأ الصدفة بالكامل في طور التنقيح، وستُطبَع آثار كل أمر إضافة إلى وسائطه (arguments) إلى خَرج قياسي (standard output) بعد توسيع الأوامر لكن قبل تنفيذها. الشيفرة التالية هي لبرنامج commented-script1.sh من مثال أساسيات كتابة برامج Bash، وقد استدعينا الصدفة في طور التنقيح ...

مقدمة إلى الدوال في Bash

ما هي الدوال؟ دوال الصدفة طريقة لتجميع أوامر من أجل تنفيذها لاحقًا باستخدام اسم واحد للمجموعة ككل أو روتين، ويجب أن يكون اسم الروتين فريدًا لا يتكرر في الصدفة أو الشيفرة النصية، وتُنفَّذ كل الأوامر التي تكوِّن الدالة مثل الأوامر العادية تمامًا. تُنفَّذ قائمة الأوامر المرتبطة باسم دالة حين تُستدعى تلك الدالة كأمر بسيط، وتُنفَّذ الدالة داخل الصدفة التي صُرِّح عنها فيها، فلا تُفتح عملية جديدة لتفسير الأوامر. وستظهر الأوامر الخاصة المُضمَّنة قبل دوال الصدفة أثناء البحث عن الأوامر، والأوامر ...

الأوامر البديلة في Bash

فائدة الأوامر البديلة يسمح الأمر البديل (Alias) بوضع كلمة واحدة مكان مقطع نصي (string)، وذلك إن استُخدم كأول كلمة من أمر بسيط، وتحتفظ الصدفة بقائمة من الأوامر البديلة التي يمكن ضبطها وإلغاء ضبطها بأمريْ alias و unalias. اكتب alias في سطر الأوامر لترى قائمة من الأوامر البديلة المعرَّفة للصدفة الحالية: hsoub: ~> alias alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias PAGER='less -r' alias Txterm='export TERM=xterm' alias XARGS='xargs -r' alias cdrecord='cdrecord -dev 0,0,0 -speed=8' alias e='vi' alias egrep='grep -E' alias ewformat='fdformat -n /dev/fd0u1743; ewfsck' alias fgrep='grep -F' alias ftp='ncftp -d15' alias ...

أمثلة عن الدوال في Bash

إعادة التدوير ستجد برامج كثيرة على نظامك تستخدم الدوال كطريقة منظمة لمعالجة سلسلة ما من الأوامر، ففي بعض أنظمة لينكس مثلًا ستجد الملف التعريفي etc/rc.d/init/functions/ يشار إليه كمصدر في كل شيفرات init النصية. وبهذا الأسلوب لا تحتاج إلى كتابة المهام المتكررة سوى مرة واحدة وبشكل عام أيضًا، مهام مثل تفقد ما إن كانت تعمل إحدى المهام، تشغيل أو إيقاف أحد العفاريت (daemons)، وهلم جرا. ثم إذا دعت الحاجة إلى كتابة تلك المهام مرة أخرى فإنك لا تحتاج سوى إعادة تدوير ...

العمليات على المتغيرات في Bash

العمليات الحسابية على المتغيرات ناقشنا العمليات الحسابية من قبل في التوسعات في Bash، انظر التوسع الحسابي. طول المتغير استخدم صيغة {VAR#}$ لحساب عدد المحارف في متغير ما، وإن كان VAR هو أحد المحرفيْن * أو @ فإن القيمة يحل محلها عدد المعامِلات الموضعية أو عدد العناصر داخل المصفوفة بشكل عام، انظر المثال التالي: [hsoub in ~] echo $SHELL /bin/bash [hsoub in ~] echo ${#SHELL} 9 [hsoub in ~] ARRAY=(one two three) [hsoub in ~] echo ${#ARRAY} 3 عمليات التحول في المتغيرات الإحلال Substitution {VAR:-WORD}$ إن لم ...

عرض (20 السابقة | 20 التالية) (20 | 50 | 100 | 250 | 500).