Ssh üzerinden renkli terminal nasıl elde edilir?


53

Ssh üzerinden uzaktaki sunuculara bağlandığımda her şey tek bir yazı tipi / renk. Yerel olarak yaptığım gibi renklere sahip olmak istiyorum, örneğin çalıştırılabilir için yeşil ve sembolik bağlantılar için mavi, vb.


Bağlandığınız bir Ubuntu sunucusu mu?
Stefano Palazzo

@ stefano-palazzo: Debian'a.
Dima,

Yanıtlar:


35

Sunucuda xterm olduğundan, bir sorun olduğunu düşündüm .bashrc

Ve gerçekten! ls --color=autosadece TTY’ye bağlıyken çalışır. Basitçe her şeyi değiştirme --coloriçinde .bashrcuzak ana ve her konuda artık oldukça renkte temin edilebilir.


42
- color = auto nereye koyduğunuzu söylerseniz, bu cevabı çok yardımcı olacaktır . sunucuda .bashrc? Hangi komutlar?
rfay

8
Bu hala geçerli olan eski bir soru olduğundan, sadece şunu eklemek istedim, Ubuntu sistemlerinde varsayılan .bashrc hangi terimlerin renge izin verdiğini tanımlayan bir case ifadesine sahiptir. .Bashrc'deki "case" $ TERM $ "satırını bulursanız," xterm) color_prompt = yes ;; " ayrıca rengi de etkinleştirir. Ayrıca, her zaman global olarak etkinleştirmek için "force_color_prompt = yes" satırını açabilirsiniz.
Mike E

2
Benim için düzelttiği Mike E'nin
yorumuydu

3
Kafam karıştı. "Her şeyi basitçe - renkli yapmak" ne anlama geliyor? Bir örnek görebilir miyim?
still_dreaming_1

1
Siz yerel ev sahibi, uzak ev sahibi veya her ikisinden de mi bahsediyorsunuz?
Adam

19

Bu benim için çalıştı:

ssh -t my_host my_command

-tanahtar oldu. Açıkladı .


Bu mükemmel çalışıyor ve bir defalık işler için çok uygun. Teşekkürler!
XtraSimplicity

Ben ne zaman, Renklerini kaybetti su -ssh bağlantısı isteminde komutunu
Dubis

10

Renkler zaten ~/.bashrcbenim için ayarlanmış gibi görünüyor ve sorun şu ki ssh bashrc dosyasını kullanmıyor. Aşağıdakileri ekleyerek, ssh oturumunuzda bashrc kullanabilirsiniz ~/.bash_profile:

if [ -f ~/.bashrc ]; then
      . ~/.bashrc
fi

1
Bu benim için çalıştı ve bunu başarmanın basit ve etkili bir yoluydu!
17'de

7

Bağlandığınızda, sunucudaki XTERM env değişkeninin içeriği nedir?

~ > export | grep -i term
TERM=xterm

$ ihracat | grep -i terim -x TERM = "xterm"
Dima

4

Benim durumumda, eksik olan kısım .bashrc dosyasına takma adlar eklenerek eklenebilecek renkli ls, grep vb.

alias ls='ls --color=auto'
alias grep='grep --color=auto'

vb.


2

~./bashrcAyarları değiştirmeyi denedim (hem yerel hem de uzak sunucuda), ancak işe yaramadı.

Sonra ~/.bashrcssh üzerinden bağlanırsam uzaktaki sunucunun çalıştırılmadığını bile farkettim . Bu yüzden yapılan ~/.bashrctarafından yürütülecek uzaktan sunucu puttinng if [ -f ~/.bashrc ]; then . ~/.bashrc fiuzak sunucunun içinde ~/.bash_profile. ( https://stackoverflow.com/questions/820517/bashrc-at-ssh-login e dayanarak ).

Bu nedenle, bu çözüm ~/bashrcdoğrudan herhangi bir dosyayı değiştirmeyi gerektirmiyordu, ancak ~/bash_profileuzak sunucunun bu dosyayı çalıştırması için uzak sunucunun değiştirilmesini gerektiriyordu ~/bashrc.


Ubuntu varsayılan olarak kullanır .profileve .bash_profilevarsayılanı kullanır ve varsayılan .profilekaynaktır .bashrc.
Muru

Bu doğru. Ancak .profilessh ile giriş yaparken varsayılan olarak çalıştırılır mı?
chris544

Evet. Kullanmayı geçersiz kılmadığınız sürece .bash_profile, .profilebir giriş kabuğu olarak başlatıldığında bash çalışır . SSH ise bash'a giriş kabuğu olarak başlar.
muru

~/.profileVarsa okunmamış olması doğru ~/.bash_profile. Fakat ~/.bash_profilevarsayılan olarak Ubuntu'da mevcut değil mi?
chris544

İlk yorumuma tekrar bak. Hayır değil. Ubuntu kullanır .profile.
muru

2

Doğrudan loggged olurken renkler iyi çalıştı bu yana, sadece un-uncommented hat force_color_prompt=yesdosyasında ~/.bashrc, yani bana ssh renkleri de verdi:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

(Ubuntu 18.04 LTS)


Ardından, bu en yalındır çözüm gibi görünüyor.
snwflk

1

Benim durumumda, yakın zamanda kurdum chef-localve benden bir satır eklememi istedi .bash_profile. Oturum açtığımda, .bashrcartık hiç yükleme yapmıyor, çünkü gördü .bash_profile.

Yaptığım şey bir satır eklemek oldu .bash_profile:

source .bashrc
export PATH="/opt/chefdk/embedded/bin:$PATH"

Oturumu kapattım ve tekrar giriş yaptım ve renkli terminalimi hemen aldım.


0

Yukarıda "Mike E" den gelen ve benim için cevabı içeren bir yorum var, fakat okumak çok zor değil .bashrc, çok fazla kullanmazsan ne anlama geldiğini anlamak biraz zor. t.

Bir miktar ~/.bashrcvidaladıktan sonra, ssh ile oturum açtığım makinedeki aşağıdaki satırları değiştirerek istenen sonuçları elde ettim:

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

için:

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
    xterm) color_prompt=yes;;
esac

Sanıyorum ilk satırda "color" dan sonra "| xterm" ekledim ya da etrafa kazıp ssh'ın neden "xterm-color" yerine "xterm" kullandığını anlayabilir ve bunu değiştirebilirdim, ama bu işe yarar ve ben Şimdi yapacak başka şeyler var.


0

Proxy üzerinden bağlanırken rengimi kaybediyordum, çünkü TERM=dumbonu düzelttim:

ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"

1
Bunu yapacaksanız, ilk bağlantıda da bir terminal tahsis etmelisiniz.
muru,
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.