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

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

Мне интересно, как бы я 1. Сохранил соединение (например, [email protected]) и всегда открывал это соединение с определенным цветом текста (например, #00ff00) 2. В идеале, чтобы любое окно терминала определяло, на каком хосте оно было. и соответствующим образом изменить его цвет. Так что, если бы я был в своей обычной среде терминала и выдал успешный ssh [email protected], он автоматически изменил бы цвет текста этого окна терминала (или вкладки) на # 00ff00

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


person Neil Sarkar    schedule 15.12.2009    source источник
comment
См. также stackoverflow.com/q/18715941/754997.   -  person Chris Page    schedule 11.03.2014


Ответы (2)


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

person spieden    schedule 15.12.2009
comment
о, да, это решает № 1 для меня, большое спасибо. Мне все еще интересно посмотреть, сможет ли кто-нибудь сделать № 2, но если через день или около того ничего не будет, я с радостью отмечу это как правильный ответ. - person Neil Sarkar; 15.12.2009
comment
Это круто! И если подумать, я почти предложил беспорядок из сценариев AppleScript и / или оболочки и escape-кодов ANSI. - person benzado; 15.12.2009
comment
Да, я тоже думал о побеге. Моя PS1 волшебным образом изменяет строку заголовка, чтобы отразить хост и каталог, в котором я нахожусь, но я не могу вспомнить, как это работает. Вы можете попробовать это, настроив свою PS1 так. Я использую zsh, но могу работать и в bash: export PS1=$'%{\e[0;34m%}\{%{\e[0m%}%n%{\e[0;36m%}@%{\ e[0m%}%m %~%{\e[0;34m%}\}%{\e[0m%}%{\e[0;36m%}$%{\e[0m%} ' - person spieden; 15.12.2009
comment
Поскольку профили терминала являются пунктами меню, удобный способ вызвать их с клавиатуры — использовать ⌘? для поиска пункта меню, затем начните вводить текст. - person Nicholas Riley; 16.12.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)
        [email protected])
            setTerminalColors "{0,65535,65535}" "{65535,0,0}"
            ;;
        [email protected])
            setTerminalColors "{65535,65535,0}" "{0,65535,0}"
            ;;
    esac
done

ssh $*

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

Вам придется отредактировать скрипт, чтобы добавить новые комбинации хоста/цвета.

Обратите внимание, что цвета должны быть указаны как тройка целых чисел RGB в диапазоне 0-65535. Я знаю, странно, да?

Технически часть AppleScript изменяет устаревшие свойства. Вы должны изменить цвета окна с помощью его свойства «набор настроек», но я подозреваю, что это изменит все окна, использующие этот набор настроек, а не только текущее.

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

person benzado    schedule 15.12.2009
comment
спасибо, это действительно круто и делает именно то, о чем я просил. Я думал об этом, и на самом деле не так уж сложно просто открыть новую вкладку с сохраненным профилем, поэтому я, вероятно, буду делать это чаще. Я предполагаю, что это чаще спрашивают и более широко полезны, поэтому я собираюсь отметить его как правильный ответ, но еще раз спасибо за сценарий, поскольку я буду использовать оба этих метода. - person Neil Sarkar; 15.12.2009
comment
Нил, ты меня убиваешь! Вы знаете, если вы хотите быть придирчивым, ваш вопрос на самом деле не о программировании. :-) - person benzado; 15.12.2009