osx-根据用户更改终端颜色

osx-根据用户更改终端颜色

我想要实现的目标:

每次我使用特定用户通过 ssh 登录到机器时 -> “危险”就像ssh danger@somehost

我希望终端将其背景更改为红色,这样我就会得到视觉反馈,表明我与特定用户处于 bash 中,而不是我自己机器上的终端。

我只能手动设置选项,而且我一点头绪都没有,一定有一些东西我可以写入 bashprofile 左右?!

如有任何提示,请提前致谢!

答案1

我用过iTerm2和一些 AppleScript。以下是用于更改背景颜色的 shell(bash 或 zsh)的函数:

function iterm_bg_color() {
  local tty=$(tty)
  osascript -e "
    tell application \"iTerm\"
      repeat with theTerminal in terminals
        tell theTerminal
          try
            tell session id \"$tty\"
              set background color to {(($1 * 257)), (($2 * 257)), (($3 * 257))} as RGB color
            end tell
          on error errmesg number errn
          end try
        end tell
      end repeat
    end tell"
}

像这样使用它将背景变成红色:

$ iterm_bg_color 255 0 0

我还创建了一些别名,以便以某些用户身份启动 ssh,就像这样:

alias ssd="iterm_bg_color 30 0 0; ssh danger@somehost; iterm_bg_color 0 0 0"

或者您可以编写一个包装器,完全根据用户为 ssh 着色。类似这样的操作bash

function ssh() {
    if [[ $1 == danger@* ]]; then
        iterm_bg_color 50 0 0
        /usr/bin/ssh "$@"
        iterm_bg_color 0 0 0
    else
        /usr/bin/ssh "$@"
    fi
}

zsh

function ssh() {
    if [[ "$1" =~ "danger@.*" ]]; then
        iterm_bg_color 50 0 0
        /usr/bin/ssh $*
        iterm_bg_color 0 0 0
    else
        /usr/bin/ssh $*
    fi
}

只需将其放置iterm_bg_color在您的 shell 配置中(~/.bash_profile~/.zshrc分别)并添加ssh()功能(或别名)即可使其在您连接时自动着色。

相关内容