الرئيسيةأنظمة التشغيلlinuxكيفية استخدام Brace Expansion في Linux Bash Shell
linux

كيفية استخدام Brace Expansion في Linux Bash Shell

يعد توسيع Brace أسلوبًا مفيدًا لإنشاء قوائم سلاسل يمكن استخدامها في البرامج النصية والأسماء المستعارة وفي سطر أوامر Linux. وفر الوقت وتجنب الأخطاء عن طريق تقليل الكتابة.

توسيع المشبك

قبل أن ينفذ bash shell أمرًا في نافذة طرفية أو سطرًا في برنامج نصي ، فإنه يتحقق لمعرفة ما إذا كان يحتاج إلى إجراء أي استبدالات في الأمر. يتم استبدال أسماء المتغيرات بقيمها ، ويتم استبدال الأسماء المستعارة بالأوامر التي يتم اختصارها ، ويتم تنفيذ أي توسيع. التوسيع الرئيسي هو شكل من أشكال التوسع الذي تدعمه Bash.

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

سوف نستخدم Bash لأمثلة لدينا

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

توسعات بسيطة

تمدد الأقواس المتعرجة موجودة داخل زوج من الأقواس المتعرجة “{}”. يمكن أن تكون قائمة من العناصر مفصولة بفواصل أو محدد النطاق. لا يُسمح بالمسافات داخل الأقواس إلا إذا وضعت السلسلة بين علامتي اقتباس » ".

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

echo {uno, dos, tres, cuatro}

يمكن أن تتكون القائمة من كلمات أو أرقام.

echo {1,2,3,4}

ترتيب العناصر في القائمة تعسفي تمامًا.

eco (4,2,3,1)

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

اقرأ أيضاً :  كيفية استخدام الأمر fsck في Linux

سيؤدي ذلك إلى طباعة الأرقام من 1 إلى 10.

echo {1..10}

الترقيم تعسفي. ليس عليك أن تبدأ من واحد.

echo {3..12}

يمكن تحديد النطاقات للتشغيل للخلف. سيؤدي هذا إلى إنشاء قائمة من خمسة إلى واحد.

echo {5..1}

يمكن أن تتضمن النطاقات أرقامًا سالبة.

echo {4 ..- 4}

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

echo {q..v}

يمكن أن تعود الأحرف أيضًا إلى الوراء.

echo {f..a}

استخدام تمدد الكورسيه مع الحلقات

يمكنك استخدام الأقواس المتعرجة الممتدة في الحلقات في البرامج النصية.

para yo en {3..7}
hacer
   echo $ i
hecho

تسمح لك نطاقات توسيع الأقواس باستخدام الأحرف كمتغير حلقة.

porque yo en {m..q}
hacer
   echo $ i
hecho

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

para i en {3..7}; echo $ i; hecho

para i en {m..q}; echo $ i; hecho

التسلسل والتعشيش

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

echo {q..v} {1..3}

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

echo {part-1, part-2 {a, b, c, d}, part-3}

يمكنك أيضًا إجراء تداخل للتوسعات عن طريق إنشاء قائمة محددة بفواصل لتوسعات النطاق.

echo {{5..0}, {1..5}}

الديباجة والحاشية

يمكنك وضع النص قبل توسيع القوس وبعده بحيث يتم تضمين هذا النص في نتائج التوسيع. يُطلق على النص الذي يتم وضعه أمام التوسيع اسم التمهيد ، بينما يُطلق على النص الذي يتم وضعه بعد توسيع القوس اسم التذييل.

يستخدم هذا الأمر ديباجة.

capítulo de eco {1..3}

يستخدم هذا المثال التذييل:

echo {contenido, papel, bilbiografía} .md

وهذا الأمر يستخدم كليهما.

echo capítulo- {1..4} .md

ملحق الدليل وأسماء الملفات

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

اقرأ أيضاً :  كيفية تمكين أو تعطيل لوحة اللمس أثناء الكتابة في UBUNTU LINUX

ل بسرعة إنشاء بعض الملفات ، استخدام :touch

toque archivo- {1..4} .txt
ls * .txt

إذا كان لديك العديد من الملفات بنفس الاسم الأساسي ولكن مع امتدادات ملفات مختلفة وتريد إجراء عملية على مجموعة فرعية منها ، يمكن أن تساعدك التوسعات المتينة. هنا ، نقوم بضغط مجموعة فرعية من الملفات التي تحتوي على “برنامج” كاسم أساسي في ملف ZIP يسمى “source-code.zip”.

تحتوي أدلة التطوير على العديد من الملفات التي سيكون لها نفس الاسم الأساسي لبرنامجك الرئيسي. بشكل عام ، لا تريد نسخ الملفات احتياطيًا أو توزيعها كملفات كائن “.o”. هذه طريقة سهلة لتضمين أنواع الملفات المهمة فقط.

programa de código fuente zip {.c, .h, .css}

سيقوم هذا الأمر بعمل نسخة من الملف وإلحاق “.bak” به ، وعمل نسخة احتياطية من الملف الأصلي. هناك نقطة مثيرة للاهتمام يجب ملاحظتها وهي أن توسيع القوس يحتوي على قائمة مفصولة بفواصل ، لكن العنصر الأول فارغ. إذا لم نقم بتضمين الفاصلة ، فلن يتم التوسيع.

cp brace / new / prog-1.c {,. bak}
ls corsé / new / prog-1.c.bak

لتنفيذ بعض الإجراءات على ملفين في دلائل مختلفة ، يمكننا استخدام توسيع قوس على المسار إلى الملفات.

في هذا المثال ، يحتوي دليل “القوس المتعرج” على دليلين فرعيين ، أحدهما يسمى “جديد” والآخر يسمى “قديم”. أنها تحتوي على إصدارات مختلفة من نفس مجموعة ملفات التعليمات البرمجية المصدر. سنستخدم diffالبرنامج لمعرفة الاختلافات بين نسختين من “prog-1.c”.

diff brace / {nuevo, antiguo} /prog-1.c

إذا كان لديك هيكل دليل قياسي تحتاج إلى إنشائه في بداية المشروع ، فيمكنك إنشاؤه بسرعة باستخدام توسيع الدعامة. يقوم  mkdir -pالخيار (الأصل) بإنشاء أدلة أصل مفقودة عند إنشاء دليل فرعي.

mkdir -p {source, build, man, help {/ pages, / yelp, / images}}
árbol

يمكنك استخدام التوسع الرئيسي مع  wgetل تحميل ملفات متعددة .

اقرأ أيضاً :  كيفية تثبيت البرامج والحزم في Linux من Terminal باستخدام الأوامر

في هذا الأمر ، سنقوم بتنزيل ملفات من مجلدين ، يسميان “test1” و “test2”. يحتوي كل دليل على ملفين باسم “image1” و “image2”.

wget https://www.URL-of-your-choice.com/test{1،2}/picture{001،002}.jpg

قائمة الملفات تعرض الملفات التي تم استردادها وكيفية  إعادة تسمية الملفات wgetلتجنب تعارض الأسماء مع الملفات الموجودة.

ls foto *. *

ثبت المشبك

ويبدو أن رئيسي التوسع هو آخر من لينكس الأسرار الدفينة . يخبرني العديد من الأشخاص أنهم لم يسمعوا أبدًا عن التوسيع الرئيسي ، بينما أفاد آخرون بأنه أحد حيل سطر الأوامر المفضلة لديهم.

اترك تعليقاً

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

error: عفوا محتوي هذا الموقع محمي بموجب قانون الألفية للملكية الرقمية !!