Какой простой способ заставить терминал использовать другой цвет, основанный на имени хоста ssh?


Используя putty в windows, вы можете сохранять сеансы, которые подключаются к определенному хосту и используют определенный цвет текста...это было очень полезно для меня, так как я работаю с кучей удаленных хостов, и мне интересно, есть ли (должен быть) способ заставить терминал (в Snow Leopard) эмулировать это поведение.

Мне интересно, как бы я это сделал. 1. Сохранение соединения (напр. username@hostname.com) и всегда открывайте это соединение с определенным цветом текста (например, #00ff00) 2. В идеале, иметь любой терминал окно определяет, в каком хосте оно находилось, и соответственно меняет его цвет. Поэтому, если бы я был в своей обычной среде терминала и выдал успешный ssh username@hostname.com, он автоматически изменил бы цвет текста этого окна терминала (или вкладки) на #00ff00

Дайте мне знать, Спасибо!

2 6

2 ответа:

В терминале можно задать профили с различным цветом фона окна, непрозрачностью и т.д. Также в профилях можно указать команду запуска. Вы можете настроить другой профиль для каждого хоста, который вы используете, с помощью команды запуска "ssh me@thathost", но это будет работать только для новых окон. Профили легко получить через Shell - > New Window.

Хорошо, если вы настаиваете на вызове ssh из командной строки, Вот что должно сделать трюк: напишите сценарий оболочки и сохраните его где-нибудь как 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 изменяет устаревшие свойства. Предполагается, что вы измените цвета окна с помощью свойства "настройки", но я подозреваю, что это изменит все окна используя этот набор настроек, а не только текущий.

Кроме того, этот сценарий предполагает, что черное на белом-это ваша "нормальная" настройка. Если это не так, вы можете изменить сценарий, чтобы сохранить текущие значения перед запуском или использовать цвета из набора настроек по умолчанию.