是否可以根据我通过 SSH 连接的服务器自动更改终端的颜色?
例如,当我启动终端时,它具有我的配置文件下定义的标准颜色。然后我 ssh 到 ssh.example.com,颜色变为黑色和绿色。然后我退出会话,颜色恢复为标准颜色主题。
我知道你可以手动完成。但我正在寻找一种自动化的方法。
答案1
是的,您可以通过更改所连接的每个主机名上的文件PS1
值来实现。.bashrc
ssh
看这个答案查看如何根据你的喜好定制 bash 的PS1
值。
在我的计算机上(radu@Radu),我有.bashrc
:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\] \w\[\033[01;37m\] > '
在托管机器(radu@ubuntu)上我有:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35;40m\]\u@ubuntu\[\033[00;40m\]:\[\033[01;34;40m\] \w\[\033[01;32;40m\] > '
答案2
如果你正在使用 xterm,这个方法很有效:https://github.com/fboender/sshbg
它是如何工作的?
黑色 Unix 魔法。好吧,不是真的。好吧,有点……
SSH 允许您在与远程主机建立连接之前运行本地命令。某些终端允许您使用转义序列设置背景颜色。通过在后台轮询父进程 PID,可以检测 SSH 命令是否已从本地执行的命令退出。将这三者结合起来,瞧!背景颜色。
sshbg 将配置文件中的条目(正则表达式)与提供的主机名进行匹配。这将生成一个配置文件名称,该名称具有与之关联的背景颜色。有关更多信息,请参阅本页底部的“配置文件”部分。
安装和使用
要求:
- Python 版本 3.x+
- 支持的终端
克隆此 repo:
git clone [email protected]:fboender/sshbg.git cd sshbg
将脚本复制
sshbg
到 PATH 中的某个目录,例如:sudo cp sshbg /usr/local/bin/
将
sshbg.conf
文件复制到~/.config/sshbg.conf
:cp sshbg.conf ~/.config/
在您的 SSH 配置中启用
LocalCommand
配置设置。您可以逐个主机执行此操作,也可以使用通配符。要为所有主机启用它,请使您的 SSH 配置如下所示:$ cat ~/.ssh/config PermitLocalCommand yes Host * LocalCommand sshbg "%n"