Komutun sonunda durmak için bash kabuk PS1 rengini nasıl durdurabilirim?


12

Gerçek kabuk komutlarını farklı bir renkte bulduğum özel bir PS1 rengim var, sadece hangi komutları yazdığımı hızlı bir şekilde görebiliyorum ve komut çıkışının kendisinden ayırabiliyorum.

PS1'deki rengin komut istemi için 'mavi' olarak ayarlandığını ve kabuğumdaki varsayılan rengin beyaz olduğunu varsayalım.

  • Bir komut yazıyorum örneğin ls, (ls -l mavi renklidir)
  • Ürettiği çıktı, ilk satır hala mavi
  • Kalan tüm çizgi beyaz olarak gelir

İstediğim komuttan sonraki tüm çıktıların 'beyaz' olması.

Başka bir örnek:

  • Bir komut 'kedi' yazıyorum, renk mavi
  • Çıktı geliyor, tüm çıktı mavi

'Mavi' yazdığım komut istemini tutarken çıktının 'beyaz' olmasını isterim

Bazı komutlarda, iyi, diğer komutlar, çıktının ilk satırına aynı renk taşar ve daha sonra varsayılan renk devreye girer ve diğer bazı komutlar, tüm çıktı (örneğin kedi) aynı renge sahiptir.

Sadece tek bir renkte yazdığım komutları ve geri kalanını varsayılan olarak tutmanın bir yolu var mı?

OSX kullanıyorum.

DÜZENLEME # 1

İşte @ derobert'in aradığımı gösteren yorumlarda bağlantılı olduğu bir ekran görüntüsü.

                 ss 1.


2
Hataları belirleyebilmemiz için bize isteminizi göstermeniz gerekir.
glenn jackman

Yanıtlar:


14

Temel olarak, bash komutu çalıştırmadan hemen önce terminal rengini sıfırlamak istiyorsunuz. Bu bir ile yapılabilir trap.

Örneğin:

trap '[[ -t 1 ]] && tput sgr0' DEBUG

Bash, DEBUGtuzağı komuttan hemen önce yürütür , böylece tput sgr0her komuttan önce (biçimlendirme niteliklerini sıfırlar) çalıştırılır.

[[ -t 1 ]]Emin STDOUT aslında bir terminal olduğunu yapmak için bir güvenlik kontrolüdür. Bash'ın STDOUT cihazının bir terminale (boru tesisatı, uzak ssh, vb.) Bağlı olmadığı ve terminal tputterminal kodları göndermek istemediğiniz bazı durumlar olabilir .


Bunu nereye koydun? Diyelim ki PS1 rengi geri getirmiyor. Şimdi, kullanıcı komutunu girdikten ve enter tuşuna bastıktan hemen sonra bu komutu yürütmek için bu satırı nasıl eklersiniz?
Polym

1
@polym adresinde .bashrc(veya $PS1ayarlanan her yerde ). Bunu $PS1tanımın hemen yanına koyarım, böylece ilgili olduklarını bilirsiniz.
Patrick

Tamam vay bu işe yarıyor. Bunun yanlış gitme olasılığı var mı?
Polym

@polym artık değil
Patrick

parlak, tam olarak terminal rengini sıfırlamak için ihtiyacım olan şey.
iQ.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.