Какой простой способ заставить терминал использовать другой цвет в зависимости от имени хоста ssh? - PullRequest
6 голосов
/ 15 декабря 2009

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

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

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

Ответы [ 2 ]

10 голосов
/ 15 декабря 2009

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

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

4 голосов
/ 15 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...