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_aliasesこと ができますexec 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任意の 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
  • これは、カラースキームの1つに対応する単一の引数を取りますterminal(例: 海)setterm上記の回答の代わりに呼び出すこともできますが、セッション~/.bash_aliasesを終了するときにターミナルが元の配色に戻るようにも追加することを忘れないでください。ssh

OSX のデフォルトbashプロファイルは をソースしない.bash_aliasesため、 に次のような内容を追加する必要がある場合があります~/.bash_profile

if [ -f ~/.bash_aliases ]; then
  source ~/.bash_aliases
fi
  • OSXでターミナルの色を変更する方法の詳細については、このSOの答え

関連情報