連接到 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],那麼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

連接到我自己的電腦時我需要這個。我所做的很簡單,只需將此程式碼片段添加到我的程式碼中.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 中的終端顏色的更多信息,請參閱這個答案

相關內容