لماذا يتصرف موجه bash هذا بشكل غريب/يختفي، وكيف يمكنني إصلاحه (OS X)؟

StackOverflow https://stackoverflow.com/questions/706750

  •  22-08-2019
  •  | 
  •  

سؤال

أعترف أنني أستخدم موجه 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 الذي يبدو مثل هذا:alt text
(مصدر: 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 فار المراد تصديرها: فقط قذيفة الاحتياجات الخاصة بك لرؤيتها

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top