根据ssh主机名,终端使用不同颜色的简单方法是什么?

时间:2009-12-15 06:58:55

标签: macos ssh terminal putty

在Windows中使用putty,你可以保存连接到某个主机并使用某种文本颜色的会话......这对我来说非常有用,因为我使用了一堆远程主机,我想知道是否有(必须有)一种让终端(在Snow Leopard中)模仿这种行为的方法。

我想知道我会怎么做 1.保存连接(例如username@hostname.com),并始终以特定文本颜色打开该连接(例如#00ff00) 2.理想情况下,让任何终端窗口检测它所在的主机并相应地更改其颜色。因此,如果我在常规终端环境中并发布了成功的ssh username@hostname.com,它会自动将该终端窗口(或标签)的文本颜色更改为#00ff00

让我知道,谢谢!

2 个答案:

答案 0 :(得分:10)

好吧,如果你坚持从命令行调用ssh,这里应该有一些技巧:写一个shell脚本并将它保存在colorssh.sh的某个地方。运行时,它会查看匹配主机的参数,并相应地设置活动终端窗口的颜色。然后它调用真正的ssh,传递这些参数。当ssh将执行返回到脚本时,它会将颜色设置回正常。

由于您可能希望继续键入ssh而不是colorssh.sh,因此您可以在.profile中设置别名。

至于脚本本身?这是代码:

#!/bin/bash

function setTerminalColors {
    osascript \
        -e "tell application \"Terminal\"" \
        -e "tell selected tab of front window" \
        -e "set normal text color to $1" \
        -e "set background color to $2" \
        -e "end tell" \
        -e "end tell"
}

for ARG in $*
do
    case "$ARG" in
        host.example.com)
        username@host.example.com)
            setTerminalColors "{0,65535,65535}" "{65535,0,0}"
            ;;
        username@otherhost.example.com)
            setTerminalColors "{65535,65535,0}" "{0,65535,0}"
            ;;
    esac
done

ssh $*

# back to normal
setTerminalColors "{0,0,0}" "{65535,65535,65535}" 

您必须编辑脚本以添加新的主机/颜色组合。

请注意,必须将颜色指定为整数的RGB三元组,范围为0-65535。我知道,很奇怪,对吧?

从技术上讲,AppleScript部分会更改已弃用的属性。您应该通过其“设置集”属性更改窗口的颜色,但我怀疑这将使用该设置更改所有窗口,而不仅仅是当前设置。

此外,此脚本假定白色黑色是您的“正常”设置。如果不是这种情况,您可以在运行前更改脚本以保存当前值,或使用默认设置集中的颜色。

答案 1 :(得分:4)

在终端中,您可以使用不同的窗口背景颜色,不透明度等定义配置文件。此外,在配置文件中,您可以指定启动命令。您可以使用启动命令“ssh me @ thathost”为您使用的每个主机设置不同的配置文件,但这只适用于新窗口。通过Shell轻松获取配置文件 - >新窗口。