لماذا يتصرف موجه bash هذا بشكل غريب/يختفي، وكيف يمكنني إصلاحه (OS X)؟
سؤال
أعترف أنني أستخدم موجه bash طويل الأمد إلى حد ما:
--(username)-(Wed April 01|12:00:00)--(~ $
خطرت لي مؤخرًا فكرة رائعة لتغييرها بحيث اعتمادًا على قيمة الخروج من الأمر السابق، في حالة النجاح، ستكون العناصر الداخلية للـ () خضراء، وإذا فشلت، ستكون حمراء.لقد نجحت في معظم الأحيان (بعض حالات الخروج الفردية ستغير اللون إلى شيء آخر، لكنني موافق على ذلك)، ولكن عند كتابة أمر يتكون من أكثر من سطر واحد، ويؤدي إلى تمرير الجهاز، موجه يختفي!عملت المطالبة الخاصة بي بشكل جيد عندما لم يكن هناك لون، لذلك أعتقد أن الأمر مرتبط بهروب اللون الخاص بي، وخاصة ['s] غير المغلقة، لكن لا يمكنني تحديد ذلك.
#.profile
export PS1='--(\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m \$ '
شكرا لك مقدما!
المحلول
هذا يبدو وكأنه هذا يجب أن تحل مشكلتك.
يبدو هذا عمل بالنسبة لي*
:
export PS1='--(\[\e[$((32-${?}))m\]\u\[\e[0m\])-(\[\e[$((32-${?}))m\]\d\[\e[0m\]|\[\e[$((32-${?}))m\]\T\[\e[0m\])--(\[\e[$((32-${?}))m\]\w\[\e[0m\] \$ '
*
حسنا، حقا export PS1='\u@\h:\w\$ '
تناسبني
لاقتباس المنشور المرتبط، الجواب يكمن في الإضافة \[ و \] حول جميع تسلسلات الألوان الخاصة بك في إعلان PS1 الخاص بك:
قبل أن أحصل على القيمة التالية لـ PS1:
'\e[0;34m\h:\w [!]\$\e[0m '
مما أعطاني موجهًا أزرقًا لطيفًا للنموذج التالي
اسم المضيف: دليل العمل [رقم الأمر]$
ومع ذلك، واجهت نفس مشكلة التفاف الأسطر التي واجهتها.كان الإصلاح هو إدراج \[ و \] حول هروب ANSI حتى تعرف الصدفة عدم تضمينها في حساب التفاف السطر.وينتج عن هذا القيمة التالية لـ PS1:
'\[\e[0;34m\]\h:\w [!]\$\[\e[m\] '
نصائح أخرى
http://mywiki.wooledge.org/BashFAQ/053 -- لدي مطالبة رائعة بالألوان، والآن يبدو أن bash لا يعرف مدى اتساع طرفي.التفاف الخطوط بشكل غير صحيح.
بالمناسبة؛للرجوع اليها.هنا بلدي PS1
الذي يبدو مثل هذا:
(مصدر: lyndir.com)
\[$reset$bold$green\]\u@\h\[$blue\] \W \[$red\]${?/#0/\[$green\]}\$\[$reset\]
لاحظ كيف أضع جميع رموز الألوان $parameters
لجعلها أكثر أناقة، ولكن الأهم من ذلك، لأنه يجب أن تستخدم tput
لتوليدهم.يرى:
http://mywiki.wooledge.org/BashFAQ/037 - كيف يمكنني طباعة النص بألوان مختلفة؟
أعلن عن معلمات الألوان الخاصة بي في برنامج نصي مساعد يتم الحصول عليه من مصدر لي ~/.bashrc
(وأي نصوص أكتبها) وهو ما يسمى bashlib
.
وفي ملاحظة أخيرة؛ضع خاصتك PS1
التعريف في ~/.bashrc
ولا تفعل ذلك export
هو - هي.لا يوجد أي سبب على الإطلاق يدفعك إلى إضافة ملفك PS1
تعريف للبيئة بأي وجميع العمليات التي تنتجها من قوقعتك.
ويبدو أنك لمجرد أن يكون في عداد المفقودين بداية ونهاية أقواس حول هروب الخاص بك (قبل أول '\ ه' وبعد 'م' الماضي):
PS1='--(\[\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m\] \$ '
وكما ذكر، لا يحتاج PS1 فار المراد تصديرها: فقط قذيفة الاحتياجات الخاصة بك لرؤيتها