Ssh çıkış / çıkışından sonra terminalin “Reset” renkleri


21

Uzak bir sunucuya bağlandığımda, terminalin renklerinin değişmesini seviyorum. Bunu yapmak için settermuzak ~ / .bashrc dosyamda kullanıyorum. Ancak, ben exit, terminal renkleri yerel olanlara sıfırlanmaz.

Sorunu çözdüm, ancak en iyi çözüm olup olmadığından emin değilim. Ben de bunu bulabilirdim.

Uzak sunucudaki ~ / .bash_logout'a şunu ekledim:

echo -e "\033[0m"
/usr/bin/clear

Sadece meraktan: Daha iyi bir yol bilen var mı? ( echo -e "\033[0m"Hattı http://edoceo.com/liber/linux-bash-shell adresinden aldım )


2
Bunun tputyerine renkleri değiştirmek için kullanmanızı öneririm . Baksana.
Ram

Hangi renkleri ayarlıyorsunuz ve nasıl? İsteminiz ( PS1) mi demek istediniz ?
terdon

Yanıtlar:


37

Daha iyi:
tput sgr0normaldeecho -en "\e[0m"

Aradaki fark, terminal tipi ANSI dışındaysa tput kullanmanın uyarlanması ve düzgün ayarlanmasıdır.

man 5 terminfo kullanmak için daha fazla kod.

Orada 'sıfırlama' bulacaksınız, bu yüzden tput resetçalışması gerekir.


$ echo -e "\ e [7m TEST \ e [0m"  
 TEST   
$ echo -e "$ (tput devir) TEST $ (tput sgr0)"  
 TEST   
$   

(TEST baskılarının arka plan / ön plan renkleri değişmiş olmalıdır, burada gösterilemez - yalnızca "taklit edilmiş")


Bunun için başka bir seçenek buldum, daha az geeky bir yol:

util-linux (ubuntu üzerinde) paketi içerir setterm(kabuk yardımcı programı).

yazın setterm --helpve mevcut seçenekleri bulacaksınız.


GERÇEK çıktı tput sgr0

$ tput sgr0 | od -t x1z
0000000 1b 28 42 1b 5b 6d                                >.(B.[m<
0000006

... terminalinizin kurulumuna bağlıdır, ör.

$ set | grep TERM
TERM=xterm-256color

Yukarıdaki için.


$ infocmp ansi
    İnfocmp ile dosyadan yeniden oluşturuldu: / lib / terminfo / a / ansi
ansi | ansi / pc-term renkle uyumlu,
    duyuyorum, mc5i, mir, msgr,
    renkler # 8, sütunlar # 80, bu # 8, çizgiler # 24, ncv # 3, çiftler # 64,
    ACSC = + \ 020 \, \ 021- \ 030. ^ Y0 \ 333` \ 004A \ 261f \ 370g \ 361h \ 260j \ 331K \ 277l \ 332m \ 300N \ 305o ~ p \ 304q \ 304R \ 304s_t \ 303u \ 264V \ 301w \ 302x \ 263y \ 363z \ 362 {\ 343 | \ 330} \ 234 ~ \ 376,
    bel = ^ G, yanıp sönme = \ E [5m, kalın = \ E [1m, cbt = \ E [Z, açık = \ E [H \ E [J,
    cr = ^ M, cub = \ E [% p1% dD, cub1 = \ E [D, cud = \ E [% p1% dB, cud1 = \ E [B,
    cuf = \ E [% p1% dC, cuf1 = \ E [C, fincan = \ E [% i% p1% d;% p2% dH,
    cuu = \ E [% p1% dA, cuu1 = \ E [A, dch = \ E [% p1% dP, dch1 = \ E [P,
    dl = \ E [% p1% dM, dl1 = \ E [M, ech = \ E [% p1% dX, ed = \ E [J, el = \ E [K,
    el1 = \ E [1K, ev = \ E [H, hpa = \ E [% i% p1% dG, ht = \ E [I, hts = \ EH,
    ich = \ E [% p1% d @, il = \ E [% p1% dL, il1 = \ E [L, ind = ^ J,
    indn = \ E [% p1% dS, invis = \ E [8m, kbs = ^ H, kcbt = \ E [Z, kcub1 = \ E [D,
    kcud1 = \ E [B, kcuf1 = \ E [C, kcuu1 = \ E [A, khome = \ E [H, kich1 = \ E [L,
    mc4 = \ E [4i, mc5 = \ E [5i, nel = \ r \ E [S, op = \ E [39; 49m,
    rep =% p1% c \ E [% p2% {1}% -% db, rev = \ E [7m, durulama = \ E [% p1% dT,
    rmacs = \ E [10m, rmpch = \ E [10m, rmso = \ E [m, rmul = \ E [m,
    s0ds = \ E (B, s1ds = \ E) B, s2ds = \ E * B, s3ds = \ E + B,
    setab = \ E [% 4 p1% dm, setaf = \ E [% 3 p1% dm,
    SGR = \ e [0,,% 10,% p1% t;% 7?%% p2,% t;% 4;?%% p3% t;% 7?%% P4% t% 5,%? % p6% t% 1;?%% p7% t% 8;?%% p9% t,% 11, m,
    sgr0 = \ E [0; 10m, smacs = \ E [11m, smpch = \ E [11m, smso = \ E [7m,
    smul = \ E [4m, tbc = \ E [3g, u6 = \ E [% i% d;% dR, u7 = \ E [6n,
    u8 = \ E [?% [; 0123456789] c, u9 = \ E [c, vpa = \ E [% i% p1% dd,

SEE ALSO (man pages):
       tic(1) infocmp(1), captoinfo(1), infotocap(1), toe(1),  
       ncurses(3NCURSES), term(5).  terminfo(5).

Daha fazlasını keşfedin, buradan başlayın belki https://en.wikipedia.org/wiki/Terminfo
Programcı'nın ncurses kılavuzu - Google Kitaplar

not: ncurses termcap, terminfo ve elbette lanetler için arayüzler sağlar.


echo -e "\e \033 \x1b " | od -t x1z- hangisi daha okunabilir?
Hannu

tput sgr0farklı bir şey döndürür \e[0m, şuna a=$(tput sgr0); set | grep ^a=bakın : ve sonucu görün. Ayrıca, eşdeğer setterm seçeneğin ne olduğunu söyleyebilir misiniz \e[0m?
SebMa

\e[0mVeya bunun \e[mANSI tipi terminaller için olduğunu unutmayın , tput sgr0 terminaliniz ANSI değilse size tamamen farklı bir şey verebilir. ANSI terminalleri için bile emin olamazsınız, çünkü gerçekten kullandığınız terminal terminfo veritabanında farklı ayarlanmış olabilir.
Hannu

TERM=ansi a=$(tput sgr0); set | grep ^a=ve sonuç a=$'\E[0;10m'. Bu farklı görünüyor\e[0m
SebMa

Evet? "ANSI terminalleri için bile emin olamazsınız, çünkü gerçekten kullandığınız terminal terminfo veritabanında farklı ayarlanmış olabilir." Yukarıda görebileceğiniz gibi, bu varyant \e(B\e[mfarklılıklar beklemektedir!
Hannu

17

"Reset" konsol komutu aradığınıza inanıyorum


2
Sıfırlamadaki sorun, tüm konsol içeriğini silmesidir ve bazen istediğiniz şey bu değildir.
niglesias

3

Bunu kullanarak uzaktan .bash_logout daha uygun bulabilirsiniz:

tput init

Bunu genel olarak iyi bir uygulama olarak her .bash_logout'ta (ve hatta ~ / .profile'da) kullanmak iyi olabilir.


2

İstediğiniz renkleri uzak hesabın ~ / .bashrc dosyasına koyarsanız, oturum açma işleminde etkili olmalı ve çıkıştaki yerel ayarlarınıza geri dönmelidir.


Ben de öyle düşünmüştüm. Ama ssh'tan çıktığımda geri dönmediler. Belki de .bashrc'de (GNOME terminalini kullanarak) setterm kullanıyordum. .Bashrc'de renk düzenini ayarlamak için farklı bir yöntem kullanıyor musunuz?
dgo.a

GNOME kullanıyorsanız, linux kullandığınızı varsayıyorum. Ubuntu kullanıyorum, ancak sürecin dağıtımlarda oldukça benzer olduğunu tahmin ediyorum. Dosyayı yedekleyebilir, ardından bir metin düzenleyicide açabilir ve PS1 = yazan satırdan başlayarak içeriği düzenleyebilirsiniz. Bilgileri novell.com/coolsolutions/tools/17142.html adresinde bulabilirsiniz . Size .bashrc dosyası hakkında bilmek istediğinizden daha fazlasını anlatır.
Yitzchak

1
Oh hayır. Terminal ayarları terminalde ne yaptığınıza bağlı değildir. Onlar (antroforma!) Yerel, uzak, Svahili ya da başka bir yerde çalışmak umurumda değil. Bu basit bir durum makinesidir. Bir komutu bir şeye değiştirmek için kullandığınız için ... başka bir şeye değiştirmek için bir komut kullanmanız gerekir. Ssh komutlarınızı sarmak için bir diğer ad / işlev yazmak istemiyorsanız .bash_logout çözümü en iyi yoldur. Blech. Daha kolay, ayarlarınızı (her ne olursa olsun) PS1 istem çıkışınızın bir parçası haline getirin. Bir makinede oturum açtığınızda, değişecek, oturumu kapatacak, eski komut istemi eski durumuna dönecektir.
lornix
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.