Какой простой способ заставить терминал использовать другой цвет, основанный на имени хоста ssh?
Используя putty в windows, вы можете сохранять сеансы, которые подключаются к определенному хосту и используют определенный цвет текста...это было очень полезно для меня, так как я работаю с кучей удаленных хостов, и мне интересно, есть ли (должен быть) способ заставить терминал (в Snow Leopard) эмулировать это поведение.
Мне интересно, как бы я это сделал.
1. Сохранение соединения (напр. username@hostname.com) и всегда открывайте это соединение с определенным цветом текста (например, #00ff00)
2. В идеале, иметь любой терминал окно определяет, в каком хосте оно находилось, и соответственно меняет его цвет. Поэтому, если бы я был в своей обычной среде терминала и выдал успешный ssh username@hostname.com
, он автоматически изменил бы цвет текста этого окна терминала (или вкладки) на #00ff00
Дайте мне знать, Спасибо!
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 изменяет устаревшие свойства. Предполагается, что вы измените цвета окна с помощью свойства "настройки", но я подозреваю, что это изменит все окна используя этот набор настроек, а не только текущий.
Кроме того, этот сценарий предполагает, что черное на белом-это ваша "нормальная" настройка. Если это не так, вы можете изменить сценарий, чтобы сохранить текущие значения перед запуском или использовать цвета из набора настроек по умолчанию.