Bash'nin PS1 kullanıcı adındaki belirli bir harfin rengini değiştirme


9

PS1 tarafından bash olarak görüntülenen kullanıcı adımdaki belirli bir harfin rengini değiştirmek istiyorum.

Örn: benim ise \uise rahul, ben mektubu istiyorum hmavi renkte olmalı ve beyaz olmak üzere istirahata.

Ben biliyorum \ukullanıcı adı ve benzeri etiketleri ekleyerek yapılır bütün bir 'varlık' bir renk ekleyerek ifade eder: [\033[38;5;15m\].

Mümkünse, aynı şeyi nasıl yapacağımı lütfen öğrenebilir miyim.

Yanıtlar:


13

\uKaçış kullanmamanın sakıncası yoksa , bunu şöyle yapabilirsin:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

Bu, istemi yalnızca kullanıcı adına ve bir alana ayarlar. Kullanıcı adının ilk karakteri kırmızı olacaktır. Bu, $USERdeğişkeni belirli bir aralıkla iki kez genişleterek çalışır . Aralık ilk kez 0'dan 1'e kadardır. İkinci kez 1'den (ikinci karakter) sonuna kadar.

İstediğiniz istemi almak için şunu kullanın:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "

1
Ofset ile başlayan dizenin tamamını yazdırmak için uzunluğu atlayabilirsiniz : ilk karakter hariç tüm kullanıcı adı için. Güzel çözüm! OP'nin istediği gibi üçüncü karakterin renginin nasıl değiştirileceğini de gösterebilir misiniz? ${USER:1}
tatlı

1
Böyle bir şeyi test edebiliriz echo -e, örneğinecho -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} "
tatlı

2
Bunun çeşitli farklı kullanıcı adlarıyla çalışması gerekiyor mu (örneğin, herkes için 3. harfi vurgulayın)? Sadece sizin içinse, daha basit bir yaklaşım, kullanıcı adınızın harflerini, örneğin rayerine ${USER:0:2}
kodlamaktır

@egmont hardcoding neredeyse hiçbir zaman en iyi yol değildir, ancak kuşkusuz genellikle daha basittir. Bu şekilde, kodu genel bir yapılandırma dosyasına bırakabilir veya başkalarıyla paylaşabilirsiniz. Hesabınız yeniden adlandırıldığında da davayı ele alır.
Sebastian Stark

1
Şahsen kendi kabuk yapılandırmamı üç farklı adlandırılmış hesap arasında paylaşıyorum. Ama belki burada felsefeye
Sebastian Stark
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.