سؤال

لقد فعلت شيئا لكسر مطالبة شل باش في محطة OS X (10.5.7).

هذا هو PS1 الذي قمت بتكوينه:

PS1='\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '

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

أبسط مطالباتي على ما يلي:

PS1='\[\e[1m\]\h:\w\$ \[\e[0m\]'
PS2='> '

وما زلت أرى شيئا مثل:

localhost: ~ / دعم المكتبة / التطبيق / فايرفوكس / ملفات التعريف / knpmxpup.defau LT / ملحقات / {1A2D0EC4-75F5-4C91-89C4-3656F6E44B68} $ ExpoCD  {1A2D0EC4-7 5F5-4C91-89C4-3656F6E Export PS1 = " [ E [1؛ 32m ]  h  [ e [0m ]: CD Library / Apple ائتمانيا  الدعم /

لقد حاولت أيضا \033 بدلا من \e. وبعد أنا فقط تضمنت PS2 هناك للحصول على معلومات، لم أغير ذلك من التثبيت الافتراضي. إذا قمت بإزالة رموز الألوان بالكامل، فكل شيء يعمل بشكل جيد، أي أفكار؟

هل كانت مفيدة؟

المحلول

مشاكل التفاف الخط في باش ليست جديدة. استشر القائمة البريدية، ربما هناك خطأ آخر فيما يتعلق بهذا.

لا يمكنك أن تفعل أكثر من علامات الأحرف غير القابلة للطباعة، يجب إجراء الباقي من قبل رمز المطالبة.

نصائح أخرى

أنا الآن باستخدام PS1 هذا مع تأثير جيد:

green=$(tput setaf 2)
blue=$(tput setaf 4)
bold=$(tput bold)
reset=$(tput sgr0)
PS1="\[$green$bold\]\h\[$reset\]:\[$blue$bold\]\w\[$reset\]\$ "

يظهر التمرير من خلال سجل أمري للتعامل مع الخط الآن. ومع ذلك، في غضون ذلك، سئل هذا السؤال، لقد قمت أيضا بتحديث OS X إلى 10.6.3

هذا الموضوع stackoverflow. يبدو ذات صلة. كما لاحظ شخص ما في هذا الموضوع، أسئلة وأجوبة باش في mywiki.wooledg.org يناقش كيفية اقتباس رموز الألوان بشكل صحيح في مطالبات باش (الأسئلة الشائعة 53.)، والاحتجاج المناسب للألوان المحطة (الأسئلة الشائعة 37.).

يبدو أنك قد نجت بشكل صحيح وتسلسلات مغلقة.

الحل البديل استخدمه على أي حال لإضافة " n" في النهاية. أجد أنه أكثر وضوحا ويقلل أي مشكلة في مشاكل التفاف. النهاية الدقيقة ل PS1 هي:

'\n\[\033[0;30m\]$\[\033[0m\]

ممتاز howto ربما تعرف:

باش موجه howto.

هنا لي: إنه أفضل واحد وجدته، لكن الموقع الذي وجدته أصلا أنه في عداد المفقودين شخصية هروب، مما يؤدي إلى مشكلة التفاف الخط. أنا tinkered معها وأخيرا حصلت عليه العمل. إنه يظهر المستخدم والمسار ومعلومات الفرع بتباين جيد ولون حكيم.

export PS1='\[\e[1;37m\]\[\e[1;32m\]\u\[\e[0;39m\]:\[\e[1;33m\]\w\[\e[0;39m\]\[\e[1;35m\]$(__git_ps1 " (%s)")\[\e[0;39m\] \[\e[1;37m\]|\[\e[0;39m\]\$'

أيضا، أضف

GIT_PS1_SHOWDIRTYSTATE=true

لإظهار علامة عندما يكون الفرع "متسخا" (موجود تغييرات)

export HISTCONTROL=ignoredups

من المفيد أيضا تجاهل التكرارات عند التمرير عبر تاريخ باش.

bind "set completion-ignore-case on" 

يساعد أيضا.

أخيرا،

shopt -s checkwinsize

قد تكون مفيدة في OSX إذا استمرت المشكلات.

لقد لاحظت أن هناك بعض المشكلات مع تحديد المواقع المؤشر الفوري حتى لو لم تكن هناك شخصية خاصة في PS1 أو PROMPT متغيرات البيئة.

إذا خرجنا ملف لا يحتوي على سحر نهاية الخط في النهاية. سوف يخلط بين المطالبة.

يمكنك إعادة إنتاج هذا من خلال القيام:

curl https://gist.githubusercontent.com/martinos/d4aa0a7d4d752b0d0d9f/raw/3198c39f84a080c44227a084a19fb3a0bb661ee5/wrapping_issue.txt

والضغط على مفتاح UP عدة مرات وسترى أن الفوري يتربق.

يمكنك أن ترى مثالا على ذلك في العمل:

https://asciinema.org/a/9mtjhi9dib6md4ocsbw210cca.

عندما يحدث هذا، فقط اضغط <CTRL-C> وسوف تعود الفوري إلى وضعها الطبيعي.

لاحظ أن Zshell لا تملك هذه المشكلة.

للرجوع إليها في المستقبل، هذا ما أستخدمه:

export PS1="\[\033[0;31m\][\u@Project:\w]$\[\033[0m\] "

هذا من شأنه أن يعرض موجه Shell الخاص بي على النحو التالي:

[ec2-user@Project:~]$

يساعدني في التمييز بين المواقع الحية والديدان.

"Shopt-ShuthtWinsize" يعمل أيضا لمشاكل التفاف Cygwin أيضا

إذا كنت تستخدم خدعة شريط العنوان "\e]2;titlebar\a", ، تأكد من الهروب من ذلك أيضا: "\[\e]2;titlebar\a\]"

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