يعد توسيع Brace أسلوبًا مفيدًا لإنشاء قوائم سلاسل يمكن استخدامها في البرامج النصية والأسماء المستعارة وفي سطر أوامر Linux. وفر الوقت وتجنب الأخطاء عن طريق تقليل الكتابة.
توسيع المشبك
قبل أن ينفذ bash shell أمرًا في نافذة طرفية أو سطرًا في برنامج نصي ، فإنه يتحقق لمعرفة ما إذا كان يحتاج إلى إجراء أي استبدالات في الأمر. يتم استبدال أسماء المتغيرات بقيمها ، ويتم استبدال الأسماء المستعارة بالأوامر التي يتم اختصارها ، ويتم تنفيذ أي توسيع. التوسيع الرئيسي هو شكل من أشكال التوسع الذي تدعمه Bash.
يتوفر توسيع المشبك في العلب الحديثة ، ولكنه قد يكون مفقودًا في بعض المساكن القديمة. إذا كنت ستستخدم توسيع الأقواس في البرامج النصية الخاصة بك ، فتأكد من استدعاء قذيفة تدعم توسيع القوس ، مثل Bash:
سوف نستخدم Bash لأمثلة لدينا
قد يبدو إنشاء قائمة السلاسل حداثة أكثر من كونها ميزة ، ولكنه يقدم بعض الميزات التي يمكن أن توفر الوقت وضربات المفاتيح. يمكنك غالبًا تقديم حل بسيط وأنيق لمشكلة أو مطلب.
توسعات بسيطة
تمدد الأقواس المتعرجة موجودة داخل زوج من الأقواس المتعرجة “{}”. يمكن أن تكون قائمة من العناصر مفصولة بفواصل أو محدد النطاق. لا يُسمح بالمسافات داخل الأقواس إلا إذا وضعت السلسلة بين علامتي اقتباس » "
.
بالنسبة لقائمة مفصولة بفاصلة ، تأخذ عملية التوسيع كل عنصر على حدة وتمرره إلى أمر الاستدعاء. في هذا المثال ، echo
يتم فقط طباعتها في نافذة المحطة الطرفية . لاحظ أنه يتم تجاهل الفواصل.
echo {uno, dos, tres, cuatro}
يمكن أن تتكون القائمة من كلمات أو أرقام.
echo {1,2,3,4}
ترتيب العناصر في القائمة تعسفي تمامًا.
eco (4,2,3,1)
نطاق التوسيع له حرف رئيسي ولاحق متصل بنقطتين ..
بدون أي مسافة فارغة. يوفر التوسيع تلقائيًا جميع عناصر القائمة المفقودة ، لذلك يتم إنشاء النطاق بالكامل من الحرف الأول إلى النهاية.
سيؤدي ذلك إلى طباعة الأرقام من 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
استخدمناها كطريقة ملائمة لمعرفة ما يحدث بالضبط عند بدء التوسع. يمكنك استبدال أي أمر يأخذ أسماء الملفات أو الدلائل كمدخلات واستخدام توسيع القوس معها.
ل بسرعة إنشاء بعض الملفات ، استخدام :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
ل تحميل ملفات متعددة .
في هذا الأمر ، سنقوم بتنزيل ملفات من مجلدين ، يسميان “test1” و “test2”. يحتوي كل دليل على ملفين باسم “image1” و “image2”.
wget https://www.URL-of-your-choice.com/test{1،2}/picture{001،002}.jpg
قائمة الملفات تعرض الملفات التي تم استردادها وكيفية إعادة تسمية الملفات wget
لتجنب تعارض الأسماء مع الملفات الموجودة.
ls foto *. *
ثبت المشبك
ويبدو أن رئيسي التوسع هو آخر من لينكس الأسرار الدفينة . يخبرني العديد من الأشخاص أنهم لم يسمعوا أبدًا عن التوسيع الرئيسي ، بينما أفاد آخرون بأنه أحد حيل سطر الأوامر المفضلة لديهم.