如何在连接到 SSH 主机时更改终端颜色

如何在连接到 SSH 主机时更改终端颜色

所以您想更改终端颜色并在退出时将其重置回来?

这得益于.ssh/configaliassetterm

答案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而不是,如中所示settermxtermcontrol这个答案

  • 例如,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

我在连接自己的电脑时需要这个。我所做的很简单,只需将此代码片段添加到我的.bash_profile(它在我的点文件中,因此无论如何它都会出现在我的大多数电脑中):

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

您可以将其更改336699为您想要的任何十六进制颜色。

答案4

在 Apple Mac/OSX 上setterm不可用,但您可以使用osascript一个小 shell 脚本:

#!/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配置文件没有源.bash_aliases,因此您可能需要添加如下内容~/.bash_profile

if [ -f ~/.bash_aliases ]; then
  source ~/.bash_aliases
fi
  • 有关如何在 OSX 中更改终端颜色的更多信息,请参阅这个答案

相关内容