SSH 호스트에 연결할 때 터미널 색상을 변경하는 방법

SSH 호스트에 연결할 때 터미널 색상을 변경하는 방법

그러면 터미널 색상을 변경하고 종료 시 다시 재설정하시겠습니까?

.ssh/config, alias, 덕분에 가능합니다setterm

답변1

  • .bash_aliases:
    function ssh_alias() {
      ssh "$@";
      setterm -default -clear rest;
      # If `-clear rest` gives error `setterm: argument error: 'rest'`, try `-clear reset` instead 
    }
    
    alias ssh=ssh_alias
    
  • /etc/ssh/ssh_config:
    # Ensure this line exists:
      PermitLocalCommand yes
    
  • .ssh/config:
    Host your.production.host
      User root
      LocalCommand setterm -term linux -back red -fore white -clear rest
    

Bash에서는 이제 다음을 수행할 수 있습니다.

some command

# all in default colors:
  ssh your.production.host

# colors changed:
# ....

exit
# colors changed back! yeea!


에 대한 대안 setterm:

gnome-terminal또는 다른 를 사용 중이고 xterm의 제한된 색상 선택으로 인해 불만이 있거나 setterm변경 setterm사항이 명령 프롬프트 [ $PS1]의 색상 코드로 무시되는 경우 대신 에 에 설명된 대로 를 setterm사용할 수 있습니다.xtermcontrol이 답변.

  • 예를 들어 xtermcontrol --bg '#600'터미널 배경을 진한 빨간색으로 만들지만 xtermcontrol사용하기 전에 설치해야 할 수도 있습니다.(예 sudo apt install xtermcontrol: Debian 기반 시스템)

답변2

(gaRex의 글을 읽어보세요.응답첫 번째)

setterm최신 버전에서는 인수가 변경되었습니다.(더 많은 정보: man setterm)

  • .bash_aliases:
    function ssh_alias() {
      ssh $@;
      setterm --default --clear all;
    }
    
    alias ssh=ssh_alias
    
    다음을 통해 계속 사용 --clear rest하고 다시 로드 할 수 있습니다..bash_aliasesexec bash

  • .ssh/config:
    Host myproject.pro
      HostName myproject.com
      User root
      IdentityFile ~/.ssh/myproject
      LocalCommand setterm --term linux --background white --foreground black --clear all
    

답변3

내 컴퓨터에 연결할 때 이것이 필요했습니다. 내가 한 일은 다음 코드 조각을 my .bash_profile(내 도트 파일에 있으므로 어쨌든 대부분의 컴퓨터에 저장됨) 에 추가하는 것만큼 간단했습니다 .

[ -n "$SSH_CONNECTION" ] && echo -e "\033]11;#336699\a"

336699원하는 16진수 색상으로 변경할 수 있습니다 .

답변4

Apple Mac/OSX에서는 setterm사용할 수 없지만 osascript작은 쉘 스크립트와 함께 사용할 수 있습니다.

#!/bin/sh

DEFAULT_SCHEME=Basic
SCHEME=${1:-$DEFAULT_SCHEME}
SAFE_SCHEME=\"${SCHEME//\"/}\"  # sanitize user input

/usr/bin/osascript <<EOF
tell application "Terminal"
  set current settings of window 1 to settings set $SAFE_SCHEME
end tell
EOF
  • terminal이것은 알고 있는 색 구성표 중 하나에 해당하는 단일 인수를 사용합니다.(예: 바다)setterm위 답변 대신 호출될 수 있습니다 . 세션을 ~/.bash_aliases종료할 때 터미널이 원래 색 구성표로 되돌아가도록 추가하는 것을 기억하세요.ssh

OSX의 기본 bash프로필은 source 가 아니므 .bash_aliases로 다음과 같은 항목을 추가해야 할 수도 있습니다 ~/.bash_profile.

if [ -f ~/.bash_aliases ]; then
  source ~/.bash_aliases
fi
  • OSX에서 터미널 색상을 변경하는 방법에 대한 추가 정보는 다음을 참조하세요.이 SO 답변.

관련 정보