Зміна кольорів терміналів при переході на віддалену машину і назад


8

Шукаючи способу автоматично змінювати кольори терміналів при передачі ssh-ing на віддалену машину та повертатися до кольорів за замовчуванням під час виходу з сеансу ssh. Просто, хочу, щоб були інші кольори, коли я працюю на віддаленій машині.

Будь-яка ідея?

ps: не хочу використовувати iTerm2, але стандартний Terminal.app

Відповіді:


9

Я використовую наступне.

Майте команду оболонки, що називається myssh, із вмістом:

PROFILE="$1";shift;
DEF="Basic" #the default profile name
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${PROFILE}\""|osascript
ssh $@
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${DEF}\""|osascript

і використовувати bash псевдоніми для з'єднання, як-от:

alias ssweb='myssh Homebrew user@web.example.com'
alias ssmail='myssh Ocean me@mail.example.com'

Коли я хочу запустити ssh на веб-сервер, я просто пишу sswebв Термінал, і я отримав профіль "Homebrew". Коли сеанс ssh закінчується, AppleScript повертається до "Основного".

Псевдоніми повинні увійти у ваш $ HOME / .profile або подібний файл bash-startup.

"Homebrew", "Ocean" тощо - це профілі налаштування з налаштувань Terminal.app. Ви також можете налаштувати різні шрифти, кодування тощо.

Звичайно, ви можете використовувати його безпосередньо (без псевдонімів), наприклад:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name

як би ти це зробив для iterm2? Дякую!
Косу

Я перестав використовувати iTerm, коли в "vim" після вибору якогось тексту вирізається виділення замість копії ..; (Отже, на жаль, я не маю жодної ідеї про рішення iTerm2.
jm666

Дякую! Я деякий час дивився на різні химерні способи зробити це, але ваш метод простий і гнучкий. Бонусні бали за розробку крихітного фреймворку, який може приймати профілі та команди з різних псевдонімів, а не обшивати купу окремих сценаріїв із жорстко кодованими наборами переваг.
октер

2

Я знаю, що вже є пара відповідей, але ось альтернатива:

Немає загального способу зміни кольору фону, але ми можемо використовувати стандартний спосіб зміни заголовка вікна. Якщо ви входите в систему безлічі пристроїв, що не є сервером Unix (наприклад, мережеві пристрої; маршрутизатори, комутатори, брандмауери тощо), вам доведеться використовувати їх оболонки і не можете встановити власні змінні оболонки. Отже, ось ще один спосіб:

function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "\033]0;${U:=$(whoami)}@${H%%.*}\007"
  unset H
  unset U
  /usr/bin/ssh $@
}

Додайте це до свого .bashrc.

В основному, оскільки функції та псевдоніми вважають за краще шукати шлях, для цього потрібна команда ssh та використовується текст до та після "@" для встановлення змінних HOST та USER, які він використовує для того, щоб повторити код ASCII, який розпізнається термінал і використовується для встановлення заголовка.

Ви повинні використовувати для цього "ssh user@host.blah", а не "ssh -l user host.blah"

Якщо ви не вказали ім'я користувача, воно встановить його як ваше поточне ім'я користувача (очевидно, якщо ви використовуєте користувальницький .ssh / config (який я багато використовую), це не буде точно, але я думаю, що це досить добре бути корисним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.