مواصلة سلسلة الملاحظات حول
1) PROMPT_COMMAND
ربما تعرف بالفعل كيفية التعامل مع الموجه لإظهار معلومات مفيدة متنوعة، ولكن لا يعلم الجميع أنه يمكنك تشغيل أمر shell في كل مرة يتم فيها عرض الموجه.
في الواقع، العديد من معالجات الموجهات المعقدة تستخدم هذا المتغير لتنفيذ أوامر لجمع المعلومات التي يتم عرضها في الموجه.
حاول تشغيل هذا في غلاف جديد وشاهد ما يحدث للجلسة:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
إذا ركض history
في وحدة التحكم، ستتلقى قائمة بالأوامر التي تم تنفيذها مسبقًا ضمن حسابك.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
بمجرد تعيين هذا المتغير، تسجل الإدخالات الجديدة الوقت مع الأمر، وبالتالي فإن الإخراج سيبدو كما يلي:
1871 قمت بتشغيل هذا في: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 قمت بتشغيل هذا في: 01/05/19 13:38:19 حليقة bbc.co.uk 1873 قمت بتشغيل هذا في: 01/05/19 13:38:41 : 1874/01/05 19:13:39 sudo vi /etc/resolv.conf 18 قمت بتشغيل هذا في: 1876/01/05 19:13:39 cur -vvv bbc.co.uk 25 قمت بتشغيل هذا في: XNUMX /XNUMX/XNUMX XNUMX:XNUMX:XNUMX سودو سو -
التنسيق يطابق الأحرف من man date
.
3) CDPATH
لتوفير الوقت في سطر الأوامر، يمكنك استخدام هذا المتغير لتغيير الدلائل بنفس سهولة إصدار الأوامر.
مثل PATH
، عامل CDPATH
هي قائمة مسارات مفصولة بنقطتين. عند تشغيل الأمر cd
باستخدام مسار نسبي (أي بدون شرطة مائلة بادئة)، افتراضيًا، تبحث الصدفة في مجلدك المحلي عن الأسماء المطابقة. CDPATH
سيبحث في المسارات التي قدمتها للدليل الذي تريد الذهاب إليه.
إذا قمت بتثبيت CDPATH
بهذه الطريقة:
$ CDPATH=/:/lib
ثم أدخل:
$ cd /home
$ cd tmp
ثم سوف ينتهي بك الأمر دائمًا /tmp
لا يهم أين أنت.
ومع ذلك، كن حذرًا، لأنه إذا لم تحدد المحلي في القائمة (.
) ، فلن تتمكن من إنشاء أي مجلد آخر tmp
واذهب إليه كالعادة:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
أُووبس!
وهذا مشابه للارتباك الذي شعرت به عندما أدركت أن المجلد المحلي لم يتم تضمينه في المتغير الأكثر شيوعًا PATH
... ولكن عليك القيام بذلك في متغير PATH الخاص بك لأنه قد يتم خداعك لتشغيل أمر مزيف من بعض التعليمات البرمجية التي تم تنزيلها.
يتم تعيين الألغام من خلال نقطة البداية:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
هل سبق لك أن تساءلت، الكتابة exit
هل سيخرجك من bash shell الحالي الخاص بك إلى shell "أصلي" آخر، أم أنه سيغلق نافذة وحدة التحكم بالكامل؟
يتتبع هذا المتغير مدى عمق تداخلك في bash shell. إذا قمت بإنشاء محطة جديدة، فسيتم تعيينها على 1:
$ echo $SHLVL
1
وبعد ذلك، إذا بدأت عملية Shell أخرى، فسيزداد العدد:
$ bash
$ echo $SHLVL
2
يمكن أن يكون هذا مفيدًا جدًا في البرامج النصية التي لا تكون متأكدًا من الخروج منها أم لا، أو تتبع مكان تداخلك.
5) LINENO
يعد المتغير مفيدًا أيضًا لتحليل الحالة الحالية وتصحيح الأخطاء LINENO
، والذي يوضح عدد الأوامر التي تم تنفيذها في الجلسة حتى الآن:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
يتم استخدام هذا غالبًا عند تصحيح البرامج النصية. إدخال خطوط مثل echo DEBUG:$LINENO
، يمكنك تحديد مكان وجودك (أو لا) في البرنامج النصي بسرعة.
6) REPLY
إذا كنت، مثلي، تكتب عادةً رمزًا مثل هذا:
$ read input
echo do something with $input
قد يكون من المفاجئ أنك لا تحتاج إلى القلق بشأن إنشاء المتغير على الإطلاق:
$ read
echo do something with $REPLY
هذا يفعل نفس الشيء.
7) TMOUT
لتجنب البقاء على خوادم الإنتاج لفترة طويلة جدًا لأسباب أمنية أو تشغيل شيء خطير عن طريق الخطأ في الوحدة الطرفية الخاطئة، فإن تعيين هذا المتغير يعمل كحماية.
إذا لم يتم إدخال أي شيء لعدد محدد من الثواني، فسيتم خروج الصدفة.
أي أن هذا بديل sleep 1 && exit
:
$ TMOUT=1
المصدر: www.habr.com