ssh退出/注销后终端的“重置”颜色


21

当我进入远程服务器时,我喜欢改变终端的颜色。我setterm在远程〜/ .bashrc文件中使用它来完成此任务。但是,当I时exit,端子颜色不会重置为本地颜色。

我已经解决了问题,但是我不确定这是否是最佳解决方案。这就是我能想到的。

在远程服务器上的〜/ .bash_logout中,我输入:

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

出于好奇:有人知道更好的方法吗?(我echo -e "\033[0m"http://edoceo.com/liber/linux-bash-shell获得了代码)


2
我建议您改用tput颜色。查一下
拉姆(Ram)

您设置什么颜色以及如何设置?您是指您的提示(PS1)吗?
terdon 2014年

Answers:


37

更好:
tput sgr0通常等于echo -en "\e[0m"

区别在于,如果终端类型不是ANSI,并且已经正确设置,则使用tput将适应。

man 5 terminfo 以便使用更多代码。

在这里,您会发现“重置”,因此tput reset应该可以工作。


$ echo -e“ \ e [7m TEST \ e [0m”  
 TEST   
$ echo -e“ $(tput rev)测试$(tput sgr0)”  
 TEST   
$   

(TEST打印件应具有互换的背景/前景色,此处不能显示-只能“模拟”)


找到了另一种选择,一种不太怪异的方式:

util-linux(在ubuntu上)软件包包含setterm(shell实用程序)。

键入setterm --help,您将找到可用的选项。


的ACTUAL输出 tput sgr0

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

...取决于终端的设置方式,例如

$ set | grep TERM
TERM=xterm-256color

对于以上。


$ infocmp ansi
    通过infocmp从文件/ lib / terminfo / a / ansi重构
ansi | ansi / pc-term与颜色兼容,
    是,mc5i,mir,msgr,
    颜色#8,cols#80,it#8,行#24,ncv#3,对#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,眨眼= \ E [5m,粗体= \ E [1m,cbt = \ E [Z,clear = \ 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,cup = \ 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,home = \ 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,kc​​ub1 = \ 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,rin = \ 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).

探索更多内容,也许从这里开始https://en.wikipedia.org/wiki/Terminfo
ncurses程序员指南-Google 图书

注意:ncurses提供termcap,terminfo以及当然curses的接口。


echo -e "\e \033 \x1b " | od -t x1z-哪个可读性最高?
Hannu

tput sgr0返回不同于的内容\e[0m,请看this:a=$(tput sgr0); set | grep ^a=并查看结果。您能否也请问等效的setterm 选项是\e[0m什么?
SebMa

请注意,对于ANSI类型的终端,\e[0m则等于\e[m,如果您的终端不是ANSI,则tput sgr0可能会给您完全不同的东西。您甚至不能确定对于ANSI终端,因为您实际使用的终端可能在terminfo数据库中设置了不同的设置。
汉奴

TERM=ansi a=$(tput sgr0); set | grep ^a=结果是a=$'\E[0;10m'。这看起来与\e[0m
SebMa

是?“即使对于ANSI终端,也无法确定,因为您实际使用的终端可能在terminfo数据库中设置为不同。” 正如您在上面看到的,该变体具有\e(B\e[m-期望有所不同!
汉奴

17

我相信您正在寻找“重置”控制台命令


2
重置的问题在于它会擦除所有控制台内容,有时这不是您想要的。
尼日利亚

3

您可能会发现在远程.bash_logout中更合适地使用它:

tput init

作为一般的良好做法,最好在每个.bash_logout上都具有此功能(甚至在〜/ .profile上)


2

如果将所需的颜色放在远程帐户的〜/ .bashrc中,则该颜色应在登录时生效,并在退出时恢复为本地设置。


我也是这么想。但是,当我退出ssh时,它们没有还原。也许是因为我在.bashrc中使用setterm(使用GNOME终端)。您是否使用其他方法来设置.bashrc中的配色方案?
dgo.a 2011年

如果您使用的是GNOME,则假定您运行linux。我使用Ubuntu,但我猜整个发行版的过程都非常相似。您可以备份文件,然后在文本编辑器中将其打开,然后从显示PS1 =的行开始编辑内容。您可以在novell.com/coolsolutions/tools/17142.html上找到信息。它为您提供了比.bashrc文件更多的信息。
Yitzchak

1
嗯不 终端设置不是基于您在终端中所做的事情。他们(拟人化!)不在乎您是本地的,偏远的,在斯瓦希里语中工作的人还是任何人。这是一个简单的状态机。由于您使用命令将其更改为其他内容,因此您必须使用命令将其更改为其他内容。.bash_logout解决方案是最好的方法,除非您要编写别名/函数来包装ssh命令。布莱克 更简单地,将您的设置(无论它们是什么)作为PS1提示输出的一部分。当您登录到计算机时,它会更改,注销,旧的提示将恢复。
lornix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.