ssh exit / logout 후 터미널의 "재설정"색상


21

원격 서버에 넣을 때 터미널의 색상이 변경되는 것을 좋아합니다. 내가 사용하는 setterm이 작업이 완료 얻을 내 원격 ~ / .bashrc에 파일. 그러나 I exit인 경우 터미널 색상이 로컬 색상으로 재설정되지 않습니다.

문제를 해결했지만 최상의 솔루션인지 확실하지 않습니다. 이것이 내가 생각해 낼 수있는 것입니다.

원격 서버의 ~ / .bash_logout에 다음을 넣습니다.

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

궁금한 점이 있습니다. 누구나 더 나은 방법을 알고 있습니까? ( http://edoceo.com/liber/linux-bash-shell 에서 echo -e "\033[0m"줄을 얻었습니다 )


2
tput대신 색상을 변경 하는 것이 좋습니다 . 찾아 봐
Ram

어떤 색을 설정하고 어떻게합니까? 프롬프트 ( PS1) 를 의미 합니까?
terdon

답변:


37

더 나은 :
tput sgr0일반적으로echo -en "\e[0m"

차이점은 터미널 유형이 ANSI 이외의 다른 유형 인 경우 tput 사용이 적용된다는 것입니다.

man 5 terminfo 더 많은 코드를 사용할 수 있습니다.

거기에 당신은 '재설정'을 찾을 것이므로 tput reset작동해야합니다.


$ echo -e "\ e [7m 테스트 \ e [0m"  
 TEST   
$ echo -e "$ (tput rev) 테스트 $ (tput sgr0)"  
 TEST   
$   

(테스트 인쇄는 배경 / 전경색이 바뀌어야하며 여기에 표시 할 수 없습니다- "모방"만 해당)


덜 괴짜 인 이 다른 옵션을 찾았 습니다.

util-linux (ubuntu) 패키지에는 setterm(shell 유틸리티) 가 포함되어 있습니다 .

입력 setterm --help하면 사용 가능한 옵션을 찾을 수 있습니다.


의 실제 출력 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, 열 # 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, 컵 = \ 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, 홈 = \ 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, 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
프로그래머 안내서를 참조 하십시오. - Google 도서

참고 : ncurses는 termcap, terminfo 및 물론 curses에 대한 인터페이스를 제공합니다.


echo -e "\e \033 \x1b " | od -t x1z-가장 읽기 쉬운 것은 무엇입니까?
Hannu

tput sgr0와 다른 것을 반환 \e[0m합니다. 이것을 a=$(tput sgr0); set | grep ^a=보고 결과를보십시오. 에 해당하는 setterm 옵션 이 무엇인지 말씀해 주 \e[0m시겠습니까?
SebMa

참고 \e[0m또는 동등이 \e[m터미널은 ANSI가 아닌 경우 ANSI 타입 단자입니다는 tput을 sgr0 당신에게 완전히 다른 무언가를 줄 수 있습니다. 실제로 사용중인 터미널이 terminfo 데이터베이스에서 다르게 설정 되었기 때문에 ANSI 터미널도 확실하지 않습니다.
Hannu

TERM=ansi a=$(tput sgr0); set | grep ^a=결과는 a=$'\E[0;10m'입니다. \e[0m
SebMa

예? "실제로 사용하는 터미널 정보가 terminfo 데이터베이스에서 다르게 설정 되었기 때문에 ANSI 터미널도 확실하지 않습니다." 위에서 볼 수 있듯이 그 변형에는 \e(B\e[m차이가 있습니다!
Hannu

17

"재설정"콘솔 명령을 찾고 있다고 생각합니다


2
재설정의 문제점은 모든 콘솔 컨텐츠를 지우고 때로는 원하는 것이 아니라는 것입니다.
niglesias

3

원격 .bash_logout에서 더 적절하게 사용할 수 있습니다.

tput init

모든 .bash_logout에 일반적인 모범 사례 (그리고 아마도 ~ / .profile)로 이것을 사용하는 것이 좋습니다.


2

원격 계정의 ~ / .bashrc에 원하는 색상을 넣으면 로그인시 적용되고 종료시 로컬 설정으로 돌아갑니다.


나도 그렇게 생각했다. 그러나 ssh를 종료했을 때 되 돌리지 않았습니다. 아마도 .bashrc에서 setterm을 사용했기 때문일 수 있습니다 (GNOME 터미널 사용). .bashrc에서 색 구성표를 설정하는 다른 방법을 사용합니까?
dgo.a

그놈을 사용하고 있다면 리눅스를 실행한다고 가정합니다. 나는 우분투를 사용하지만 그 과정은 배포판에서 매우 비슷하다고 생각합니다. 파일을 백업 한 다음 텍스트 편집기에서 파일을 열고 PS1 =이라는 줄에서 시작하여 내용을 편집 할 수 있습니다. novell.com/coolsolutions/tools/17142.html 에서 정보를 찾을 수 있습니다 . .bashrc 파일에 대해 알고 싶었던 것 이상을 알려줍니다.
Yitzchak

1
아뇨 터미널 설정은 터미널에서 수행중인 작업을 기반으로하지 않습니다. 그들은 당신이 지역, 원격, 스와힐리어 또는 다른 곳에서 일하고 있는지 상관하지 않습니다. 간단한 상태 머신입니다. 명령을 사용하여 다른 것으로 변경했기 때문에 명령을 사용하여 다른 것으로 변경해야합니다. ssh 명령을 랩핑하기 위해 별명 / 함수를 작성하지 않는 한 .bash_logout 솔루션이 가장 좋은 방법입니다. 블리치. 더 쉽게, 설정 (무엇이든)을 PS1 프롬프트 출력의 일부로 만드십시오. 컴퓨터에 로그인하면 변경되고 로그 아웃되며 이전 프롬프트가 복원됩니다.
lornix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.