Terminal / ssh kullanırken farklı makineler için farklı renk istemleri?


12

İş yapmak için sürekli kullandığım 5 makinem var. Yanlış kutular üzerinde yanlış komutlar verdiğimde giderek sinir bozucu oluyor. Neyse ki henüz kötü bir şey yapmadım. İçinde bulunduğum makineye bağlı olarak istemimi farklı renklerde gösterecek olan sabit kodlayabileceğim herhangi bir kesmek olup olmadığını bilmek istedim? Masaüstü1 için mavi, dizüstü bilgisayar için mor, sunucu için kırmızı gibi? Mümkün mü?

Şu anda buradan alınan PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m" komutunu kullanıyorum http://www.cyberciti.biz/faq/bash-shell linux-veya-unix altında benim-shell-istem-renk-değişim- ama / ssh üzerinde açıkça çalışmıyor.

Ayrıca, bana yardım etmek için başka serin bash ipuçlarınız varsa, görüşüm harika olacak. Adam sayfalarını renklendiren bu ipucunu aldım.

http://linuxtidbits.wordpress.com/2009/03/23/less-colors-for-man-pages/


1
name@ ** server** her komutun önce hat iletmek olmadığı şeyleri sunucusu mı?
Alışmak

Dizüstü bilgisayarınız hangi İşletim Sistemi üzerinde çalışıyor?
SamK

1
name @ server, Amazon bulut gibi şeyleri kullanırken özellikle yararsızdır, çünkü her önyüklemeyi değiştirir ve kutunun amacını veya kolayca unutulmaz bir adı (user @ ip-xxxx) aktarmaz. Yani bu soru için +1 :)
Rafiq Maniar

Yanıtlar:


11

Kullandığım yöntem , ana makine adı için ana makine adı için bir renk oluşturmaktır. Aralarından seçim yapabileceğiniz çok fazla renk yok, bu yüzden kolayca çatışmalar üretecek, ancak yönettiğim az miktarda makine için yararlı.

hostnamecolor=$(hostname | od | tr ' ' '\n' | awk '{total = total + $1}END{print 30 + (total % 6)}')

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\[\e[${hostnamecolor}m\]\]\h \[\e[32m\]\w\[\e[0m\]\n$ '

İlk satır, makinenin ana bilgisayar adından 30 (inc) ve 36 (exc) arasında bir sayı oluşturur. İkinci satır, kullanıcı adı ve yolu yeşil (32) olan istemciye ve oluşturulan renkte ana bilgisayar adına uygulanır.

Hiçbir arka plan rengi ayarlanmadı ve kullandığım terminallerin arka planlarıyla çakışmaları önlemek için camgöbeği (36) ve beyazı (37) ön plandan hariç tutuyorum.


Yani hem ön plan hem de arka plan için aynı rengi üretebilir?
Chris S

Arka plan rengi oluşturulmaz. Ancak, oluşturulan rengin arka planla eşleşebileceğinden eminsiniz. Beyaz (37) ve camgöbeği (36) hariç tutuyorum çünkü kullandığım terminal arka planları ile iyi çalışmıyorlar. Bunu netleştirmek için cevabı düzenledim.
Dan Midwood

3

Doğru yoldasın. Bağlantı verdiğiniz sayfada ayrıntılı olarak ve blogumda nasıl olduğunu ayrıntılı olarak kullandım . Benim için bir Windows kutusundan PuTTY ve bir CentOS sunucusundan diğerine SSH kullanarak çalışır. Sizin için çalışmıyorsa ve sözdizimini doğru yaptığınızdan eminseniz, SSH istemcinize bağlı olabilir.


Merhaba, .bashrc'yi değiştirdim ve renkleri yerel olarak değiştirebileceğimi anlıyorum. İstediğim şey, farklı bir bilgisayara ssh yaptığımda komut istemi renginin değişmesiydi. Terminalin otomatik olarak bilmeyeceğini biliyorum, bu yüzden bunu gerçekleştirmek için işaretçiler arıyordum.
bcrawl

1
Düzenleme: tamam, evet haklısın. Her bilgisayarda .bashrc dosyası değiştirilirse, ssh yaptığınızda yapılandırılmış renkleri görüntüler. Doğru dosyayı düzenlemiyordum. Teşekkürler. Çözülmüş olduğunu düşünün.
bcrawl

2
Bu yanıt sizi doğrudan çözüme yönlendirdiyse, yanıtın solundaki onay işaretinin dış çizgisine tıklayarak bunu Kabul Edilmiş Yanıt olarak işaretlemeyi düşünün.
Kevin M

1

İşimde farklı sunucu aşamaları var

üretim evreleme geliştirme

Sahne için prod ve yeşil olarak kırmızı bir komut istemi kullanıyorum. Şimdi tüm evreleme makineleri etki alanında stg var.

Yani eşya

web1.domain.com
web2.domain.com

Evreleme / Geliştirme

stg-web1.domain.com
stg-web2.domain.com
dev-web1.domain.com
etc

Bu sadece redhat / centos için gerçekten işe yarar

Ama prod sunucular için aşağıdakilere sahibim

/etc/sysconfig/bash-prompt-xterm

İçinde

export PS1="\[[\e[1;31m\]\u@\[\e[1;31m\]\h\[\e[0m\] \W] "

Bu istemi kırmızıya çevirir .. Şimdi / etc / bashrc'ye dokunamazsınız ve diğer tüm prod olmayan makineler kullandığınız normal ön plan rengini kalır .. ama onları yeşil yaptım

if [ "$PS1" ]; then
    case $TERM in
        xterm*)
                if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
                else
                        PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
                fi
                ;;

Blok orada olsaydı .. Sadece diğer tarafın rengini yeşil olarak değiştirdim .. 33 yeşil


0

Her makinedeki bash.rc dosyasını farklı komut renkleri vermek için değiştirebilirsiniz . Veya yeterli ayrıcalığınız varsa, PermitUserEnvironmentyönerge üzerinden kullanıcı ortamının aktarılmasına izin vermek için sshd config'i değiştirin .


0

Bu gist dahil daha kapsamlı bir hostname dizesi sağlama toplamı tabanlı bir çözüm üzerinde çalışıyoruz . 256 renk uyumluluğu. Sunucularınızın her biri için belirli bir rengi kendiniz belirlemekle ilgilendiğiniz durumun yanı sıra, bunun "bilgisayarlara sahip olduğumuz sorunlardan" biri olduğunu hissediyorum, bu nedenle sizin için "rastgele" renkler elde etmek sağlama toplamları iyi bir yaklaşım olmalıdır.

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.