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

Nei*_*kar 6 macos ssh terminal putty

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

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

让我知道,谢谢!

ben*_*ado 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}" 
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

  • 尼尔,你杀了我!你知道,如果你想要挑剔,你的问题首先不是关于编程.:-) (2认同)

spi*_*den 5

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