2009-04-01 14 views
10

Ben biraz uzun soluklu bash istemi kullandığını itiraf: Son zamanlardaNeden bu bash istemi garip/kaybolan hareket ediyor ve nasıl düzeltebilirim (OS X)?

--(username)-(Wed April 01|12:00:00)--(~ $

, bunu değiştirmek için parlak bir fikir var ki, önceki komutun çıkış değerine başarı varsa, iç unsurları bağlı() 'nin yeşil olması ve başarısızlık durumunda kırmızı olur. Çoğunlukla çalışıyorum (bazı garip çıkış durumları rengi başka bir şeye dönüştürecek, fakat bende çok iyiyim), fakat birden fazla satır olan bir komut yazıp uçbirimin kaymasına neden oluyor. istemi kaybolur! Sorgulamada renk yokken iyi çalıştı, bu yüzden benim renk kaçışımla ilgili olduğunu tahmin ediyorum, özellikle de kapatılmamışlarım, ama onu kıstıramıyorum.

#.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 \$ '

Şimdiden teşekkürler!

cevap

34

this sorununuzu çözmesi gerektiği gibi görünüyor.

Bu benim için * iş gibi görünüyor

:

bağlantılı yazıyı alıntı benim için gerçekten export PS1='\[email protected]\h:\w\$ ' eser, iyi

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\] \$ ' 

*, cevap etrafında \ [ve \] ekleyerek yatıyor PS1 deklarasyonunuzdaki tüm renk dizileriniz:

Aşağıdaki değere sahip olmam için PS1:

'\ e [0; 34m \ h: \ w [] \ $ \ e [0m!' Bana şu biçimde

hostname güzel mavi istemi verdi

: işçi -dizini [komut-numarası] $

Bununla birlikte, yaptığınız aynı satır sarıcı sorunum vardı. Düzeltme, ANSI çıkışları etrafında \ [ve \] eklemek, böylece kabuk bunları satır sarma hesaplamasına dahil etmemeyi bilmekti.

+2

Chas, sadece bu soruna bakmak gözlerimi kırmızı yapar. Yardımın için teşekkürler efendim! Seninki tamamen işe yarayan tek çözüm buydu. –

+0

İstememin rengini değiştirdikten sonra (Linux'ta değil, OSX'de), geçmişimde geriye doğru arama yapmakta zorluk çekiyordum. Bu benim problemimi çözdü. Teşekkürler! – Mark

6

http://mywiki.wooledge.org/BashFAQ/053:; '! \ W [] \ $ \ [\ e [M \] 34m \] \ h \ [\ e [0'

Bu PS1 aşağıdaki değer ile sonuçlanmaktadır - Renklerle süslü bir isteğim var ve şimdi bash terminalimin ne kadar geniş olduğunu bilmiyor. Hatlar yanlış yere sarılır.

Bu arada; senin referansın için; Burada şuna benzer ki benim PS1 var: Ben $parameters bütün renk kodları koymak nasıl alt text http://lhunath.lyndir.com/stuff/PS1.png

\[$reset$bold$green\]\[email protected]\h\[$blue\] \W \[$red\]${?/#0/\[$green\]}\$\[$reset\] 

Bildirim kıvrımlara yapmak için, ama daha önemlisi, çünkü bunları oluşturmak için tput kullanıyor olmalıdır. Bkz:

http://mywiki.wooledge.org/BashFAQ/037 - Çeşitli renklerde metinleri nasıl yazdırabilirim?

Renk parametrelerimi my ~/.bashrc (ve yazdığım herhangi bir komut dosyası) tarafından sağlanan bir yardımcı program komut dosyasına (bashlib) bildiriyorum.

Son bir notta; ~/.bashrc'da PS1 tanımınızı koyun ve export'u kullanmayın. PS1 tanımınızı neden kabuktan ürettiğiniz tüm işlemlerin ortamına eklemeniz gerektiği konusunda hiçbir neden yoktur.

Sadece (ilk '\ e' öncesi ve son 'm' sonra) kaçar etrafında başlangıç ​​ve bitiş parantez eksik görünüyor
1

:

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\] \$ ' 

belirtildiği gibi, PS1 var değil dışa aktarılması gerekiyor: sadece kabuğun onu görmesi gerekiyor.