ثمانية خيارات باش غير معروفة

بعض خيارات 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 # <= on $ shopt -u cdspell # <= off 

دليل التغييرات


هناك العديد من الخيارات التي تساعدك على العمل مع الدلائل.

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] #  ... $ /full/path/to/current_working_folder $ ~/[TAB] #  ... $ /full/path/to/home/folder $ $HOME/[TAB] #  ... $ /full/path/to/home/folder 

خروج نظيف


4. checkjobs


يوقف هذا الخيار الخروج من الجلسة إذا كانت الوظائف لا تزال تعمل في الخلفية.

بدلاً من الخروج ، يتم عرض قائمة بالمهام غير المكتملة. إذا كنت لا تزال ترغب في الخروج ، فأدخل exit مرة أخرى.

 $ shopt -s checkjobs $ echo $$ 68125 # <= ID    $ sleep 999 & $ exit There are running jobs. [1]+ Running sleep 999 & $ echo $$ 68125 # <= ID      $ exit There are running jobs. [1]+ Running sleep 999 & $ exit $ echo $$ $ 59316 # <=    ID   

قدرات الاستبدال


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 !$ # <=   Enter    $ echo histverify # <=     , histverify # <=    

8. نوكلوبير


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

يحظر خيار set - هذا الكتابة. إذا لزم الأمر ، يمكنك تجاوز الحماية باستخدام المشغل >| :

 $ touch afile $ set -C $ echo something > afile -bash: afile: cannot overwrite existing file $ echo something >| afile $ 

Source: https://habr.com/ru/post/ar452522/


All Articles