بعض خيارات Bash معروفة جيدًا وغالبًا ما تستخدم. على سبيل المثال ، يكتب الكثيرون في بداية البرنامج النصي
set -o xtrace
لتصحيح الأخطاء ،
set -o errexit
للخروج عن طريق الخطأ أو
ضبط -O errunset
للخروج إذا لم يتم تعيين المتغير الذي تم استدعاؤه.
ولكن هناك العديد من الخيارات الأخرى. أحيانًا ما يتم الخلط بينهم وبين الرجال ، لذلك قمت بجمع بعض من الأكثر فائدة ، مع شرح.
ملاحظة: قد يكون لدى Mac إصدار أقدم من bash (3.x ، وليس 4.x) ، حيث لا تتوفر كل هذه الخيارات. في هذه الحالة ، انظر هنا أو هنا .set
أو shopt
؟
هناك طريقتان لتعيين معلمات bash: من برنامج نصي أو من سطر الأوامر. يمكنك استخدام
shopt
. كلاهما يغيران سلوك القشرة ، ويقومان بنفس الشيء (بحجج مختلفة) ، ويختلفان في
أصلهما .
set
معلمات
set
أو استعارة من المعلمات من الأصداف الأخرى ، في حين
shopt
إنشاء المعلمات
shopt
في باش.
إذا كنت تريد إلقاء نظرة على الخيارات الحالية ، فقم بتشغيل:
$ set -o $ shopt
لتنشيط خيار في
set
، يتم استخدام بناء جملة طويل أو قصير:
$ set -o errunset $ set -e
التأثير هو نفسه.
لتعطيل هذا الخيار ، تحتاج إلى وضع علامة زائد بدلاً من الطرح:
$ set +e
لفترة طويلة لم أتمكن من تذكر بناء الجملة هذا ، لأن المنطق يبدو خاطئًا (ناقص يعمل على الخيار ، بالإضافة إلى إيقاف تشغيله).
يستخدم
shopt
(أكثر منطقية)
-s
(set) و
-u
(unset) لتمكين الخيارات وتعطيلها:
$ shopt -s cdspell
دليل التغييرات
هناك العديد من الخيارات التي تساعدك على العمل مع الدلائل.
1. cdspell
باستخدام هذا الإعداد ، سيبدأ bash في فهم الأخطاء المطبعية وينقلك إلى مجلد قمت بكتابة اسمه بخطأ.
$ shopt -s cdspell $ mkdir abcdefg $ cd abcdeg abcdefg $ cd ..
لقد استخدمت هذا الخيار لسنوات عديدة ، ونادراً ما يتخذ قرارًا غريبًا للغاية (ربما مرة واحدة في السنة). لكن في الأيام الأخرى ، يوفر
cdspell
الوقت ، حرفيًا كل يوم.
2. autocd
إذا لم تكن مستعدًا لتحمل عدم كفاءة إدخال
cd
المتكرر ، فيمكنك تعيين هذا الخيار للانتقال إلى المجلد X إذا لم يكن الأمر X موجودًا.
$ shopt -s autocd $ abcdefg $ cd ..
في تركيبة مع الإكمال التلقائي ، يتيح لك هذا الانتقال السريع إلى المجلدات:
$ ./abc[TAB][RETURN] cd -- ./abcdefg
فقط لا
rm -rf *
المجلد
rm -rf *
(نعم ، بالمناسبة ، هذا ممكن).
3. ديريكسباند
هذا خيار رائع يمد متغيرات البيئة عن طريق الضغط على Tab:
$ shopt -s direxpand $ ./[TAB]
خروج نظيف
4. checkjobs
يوقف هذا الخيار الخروج من الجلسة إذا كانت الوظائف لا تزال تعمل في الخلفية.
بدلاً من الخروج ، يتم عرض قائمة بالمهام غير المكتملة. إذا كنت لا تزال ترغب في الخروج ، فأدخل
exit
مرة أخرى.
$ shopt -s checkjobs $ echo $$ 68125
قدرات الاستبدال
5. globstar
يمنحك هذا الخيار قدرات استبدال خارق! إذا قمت بإدخال:
$ shopt -s globstar $ ls **
ثم سوف تظهر قذيفة بشكل متكرر جميع الدلائل والدلائل.
بالاقتران مع
direxpand
يمكنك أن ترى بسرعة كل شيء أدناه في التسلسل الهرمي:
$ shopt -s direxpand $ ls **[TAB][TAB] Display all 2033 possibilities? (y or n)
6. extglob
يقوم هذا الخيار بتنشيط الوظائف التي ترتبط غالبًا بالتعبيرات العادية. هذا مفيد في بعض الأحيان:
$ shopt -s extglob $ touch afile bfile cfile $ ls afile bfile cfile $ ls ?(a*|b*) afile bfile $ ls !(a*|b*) cfile
هنا ، يتم وضع الأنماط بين قوسين ويفصل بينهما شريط عمودي. فيما يلي العوامل المتاحة:
؟ = يطابق الصفر أو حدوث واحد للنماذج المحددة
! = أظهر كل ما لا يتطابق مع الأنماط المحددة
* = صفر أو أكثر من الحوادث
+ = حدث واحد أو أكثر
@ = حدث واحد بالضبط
حماية الحوادث
7. histverify
في البداية ، يمكن أن يكون استخدام مخيف لأوامر البداية السريعة من تاريخ الاختصارات أمرًا مخيفًا بعض الشيء
!!
و
!$
.
يتيح
histverify
خيار
histverify
أولاً رؤية كيف يفسر Bash الأمر قبل أن يبدأ فعليًا:
$ shopt -s histverify $ echo !$
8. نوكلوبير
مرة أخرى ، للحماية من الحوادث ، أي من الكتابة فوق ملف موجود بالفعل مع مشغل إعادة التوجيه (
>
). قد تكون هذه كارثة إذا لم يكن لديك نسخة احتياطية.
يحظر خيار
set -
هذا الكتابة. إذا لزم الأمر ، يمكنك تجاوز الحماية باستخدام المشغل
>|
:
$ touch afile $ set -C $ echo something > afile -bash: afile: cannot overwrite existing file $ echo something >| afile $