我经常从我的 os x 终端窗口登录到不同的服务器。
我想为不同的主机指定一个配色方案,以便我的终端窗口更容易区分。这可以自动完成吗?
答案1
这是一个完整的解决方案。在 ~/.server_colors 中保存服务器 IP 地址和/或域的列表以及您想要的颜色:
192.168.122.102,红沙 192.168.122.103,海洋 www.foo.com,草 foo.com,草
然后将这一行添加到~/.profile 来劫持 ssh 命令:
别名 ssh="~/bin/safe_ssh $1"
然后将 ssh 目标中 @ 后面的内容与列表进行比较。如果匹配,则运行 AppleScript 将屏幕更改为相应的颜色。以下是 ~/bin/safe_ssh:
/bin/bash #!/bin/bash ip =`echo $ 1 | cut -d“ @” -f2` 匹配 =`cat ~/.server_colors | grep $ip | wc -l` 如果 [ $match -gt 0 ] 然后 颜色 =`cat ~/.server_colors | grep $ip | cut -f2 -d","` osascript ~/bin/change_terminal_color.scpt "$color" 2>/dev/null 菲 /usr/bin/ssh $1
最后,这是 ~/bin/change_terminal_color.scpt
运行 argv 告诉应用程序“终端”将窗口 1 的选定选项卡的当前设置设置为(第一个设置集,其名称为(argv 的第 1 项)) 结束运行
我从这篇博文。
答案2
@muirbot 的解决方案对我来说非常有效。我对此做了一些小改进。一旦我拥有足够的声誉,我就会将其添加到他的帖子下方。
更换线路
ip=echo $1 | cut -d"@" -f2
和ip=echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2
此更改允许为 ssh 命令提供附加参数,如“ssh -p 1111 userName@host”
正则表达式允许简单的 IPv4 地址和域名。
为了进一步支持多个参数,将最后一行更改为
/usr/bin/ssh $@
更新 2021-03-03:
当你拥有像 example.com 这样的域名时www.example.com使用不同的颜色,那么脚本将无法按预期工作。
确保将最短的 URL 放在顶部,然后更改
颜色=cat ~/.server_colors | grep $ip | cut -f2 -d","
到颜色=cat ~/.server_colors | grep -m 1 $ip | cut -f2 -d","
这grep -m 1当找到第一个匹配项时,命令将停止。
答案3
是的。
您可以使用例如“屏幕”并对其进行自定义: http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html
或者,如果可能的话,您可以在 SSH 客户端上执行此操作。
你也可以尝试这个:http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
答案4
我使用一个脚本在 xterm 窗口中以不同的 bg/fg 颜色启动 SSH。它根据主机名的哈希值从颜色范围中选择颜色,因此无需进行任何配置。
该脚本用 Ruby 编写:https://github.com/mickeyil/ssx