Intereting Posts
Debian, Apache, 403 Запрещенные ошибки и зашифрованные диски Разверните раздел в Gparted назад или перемещение назад + expand Как установить Kali linux на конкретный (существующий) раздел на USB-накопителе как перейти на архитектуру докеров? Использование ЦП операций файловой системы, не показанных сверху Gnome3 – добавление клавиатуры «Пользовательские ярлыки» с использованием dconf без необходимости выхода из системы Сведения о статусе Стандарта иерархии файлов Можно ли использовать комментарии в файлах virsh / libvirt xml? Есть ли способ использовать xargs через трубу? Sed + как установить параметры в команде sed, чтобы отображать строки из текстового файла В чем разница между параметрами -g и -G в useradd Что случилось с установкой NFS? Как отфильтровать «полезные» крепления из / etc / mtab или / proc / mounts выход из сценария Кто создает документы / видео / изображения / и т. Д. в домашнем каталоге

Сделать цвет текста терминала другим, когда в сеансе ssh

Есть ли способ заставить мой терминал (консоль) отображать разные цвета текста, когда я нахожусь в сеансе ssh БЕЗ изменения конфигурации цвета удаленного хоста? Например, может быть, автоматически переключается на другой профиль?

Konsole может использовать эти разные «профили»,

alt text

Я хочу в основном переключиться на другой профиль, когда в ssh-сессии. Таким образом, вместо того, чтобы по умолчанию был зеленый на черном, измените на черный на белом или что-то еще.

Это необязательно использовать эту настройку. Но если xterm или что-то имеет настройку для этого, это тоже сработает.

Идея состоит в том, чтобы работать с ANY ssh-сессией, а не только с отдельными сеансами с конкретными машинами.

Одна из возможностей, если терминал поддерживает ее, заключается в использовании escape-последовательности терминала Color Color. По-видимому, консоль не поддерживает его. Из документа последовательности управления Xterm ( ctlseqs ):

OSC Ps; Pt BEL

Ps = 4; c; spec -> Изменить цветной номер c на цвет, указанный спецификацией, то есть имя или спецификацию RGB в соответствии с XParseColor. Может быть задано любое число пар имен c. Номера цветов соответствуют цветам ANSI 0-7, их ярким вариантам 8-15 и, если поддерживается, остальная часть таблицы с 88 цветами или 256 цветов.

Это означает, что управляющая последовательность \e]4; NUMBER ; VALUE \a \e]4; NUMBER ; VALUE \a \e]4; NUMBER ; VALUE \a изменит внешний вид цвета NUMBER . NUMBER – это номер цвета (0-7 для восьми основных цветов, 8-15 для ярких версий и многое другое, если терминал поддерживает больше цветов). VALUE – это то, что понимает XParseColor , например, спецификация RGB #123456 или имя цвета X (посмотрите на rgb.txt на вашем компьютере или используйте xcolors чтобы увидеть возможности).

Например, следующая команда изменяет основной синий цвет (цвет 4) и его яркий вариант (4 + 8), чтобы содержать зеленый цвет:

 printf '\033]4;4;#004080;12;#0040ff\007' 

Обратите внимание, что это изменяет каждый символ, отображаемый в данный момент в этом конкретном цвете в окне. Невозможно изменить значение цвета только для отображаемых впоследствии символов; если это то, что вы хотите, вам нужно будет настроить каждую программу, отображаемую внутри терминала, для использования разных цветов при разговоре с терминалом.

Если это произойдет точно, когда вы вводите сеанс ssh, это будет очень сложно, но обработка общих случаев достаточно проста: используйте обертку вокруг ssh, которая изменяет цветовую палитру, затем запускает ssh и, наконец, изменяет палитру цветов назад. Примеры случаев, которые не будут обрабатываться, – это приостановка процесса ssh и запуск ssh внутри экрана или tmux.

У Konsole есть место на одной из своих вкладок настроек в строках «Запустить пользовательскую команду вместо моей оболочки»?

Если это так, вы можете сделать следующее (это то, что я настроил для своего Gnome-терминала, вам может потребоваться слегка настроить для Konsole, я буду рад обновить, если есть различия с Konsole):

  1. Создайте профиль с нужной цветовой схемой.
  2. Установите флажок «Запустить пользовательскую команду».
  3. Поместите ssh [remote host alias] в текстовое поле «пользовательская команда»
    • Если вы хотите, чтобы он работал как локальный терминал и закрывал вкладку, когда вы вводите exit , выберите команду «Когда команда выходит: exit из терминала» (или ее эквивалент)

С помощью этой настройки вы можете просто открыть новую вкладку с выбранным профилем, и она будет автоматически подключаться к вашему сеансу SSH и иметь желаемую цветовую схему.

Однако у этого есть недостаток, что он не работает для какого-либо SSH-соединения (как написано выше, вам нужно настроить профиль для каждого SSH-соединения, хотя вы, вероятно, можете написать сценарий, который позволяет вам вводить удаленный хост, когда вы открываете этот профиль), и вам нужно открыть профиль специально, если вы не установите его как свой профиль по умолчанию.

Последовательность изменения цвета фона и переднего плана в xterm (и нескольких других эмуляторах терминалов X11) равна \33]11;black\7 и \33]10;green\7 . И есть команда xtermcontrol которая упрощает ее:

 xtermcontrol --bg black --fg green 

Таким образом, вы можете переопределить команду ssh как:

 ssh() { [ -t 2 ] && xtermcontrol --bg black --fg green command ssh "$@" [ -t 2 ] && xtermcontrol --bg white --fg black }