Настройка меньшего количества цветов

Единственный способ, которым у Вас может быть несколько систем, служащих тому же порту на одном IP-адресе, состоит в том, если прикладной протокол предоставляет дополнительную информацию, которая помогает серверу определить, для какого имени хоста запрос был первоначально предназначен. Без этого весь сервер может вывести на уровне TCP/IP, целевой IP-адрес и порт, который был бы тем же для всех Ваших имен DNS.

Большинство протоколов не поддерживает то, что Вы хотите. HTTP является исключением, потому что HTTP/1.1 включает Host: заголовок, который говорит сервер, который искало имя хоста клиент. В HTTP это упоминается как основанный на имени виртуальный хостинг. Однако SSL повреждает это снова, и таким образом, существует еще более новое расширение под названием Признак Имени сервера, который приносит эту поддержку SSL также. Все системы, как могут ожидать, обеспечат a Host: заголовок в эти дни, но SNI полностью все еще не поддерживается везде.

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

Независимо от того, для чего Вы используете HTTP, фактический способ настроить это состоял бы в том, чтобы выполнить сервер проксирования на Вашем основном IP-адресе, который использует основанный на имени виртуальный хостинг для направления запросов к корректному компьютеру.

Для SSH действительно нет многих опций кроме использования различных портов. Вы могли сделать свой собственный "хост возврата", который работает вид подобных сервер проксирования, кроме вручную: пользователи сначала соединяются с Вашим основным IP-адресом, и он обеспечивает мини-оболочку, которая позволяет им далее ssh к другим хостам (использующий IP-адреса LAN). Вам будет нелегко делать ту работу беспрепятственно с неинтерактивными протоколами как SFTP или другие автоматизированные соединения, все же. Другой подход мог бы быть должен сделать сервер SSH, который использовал информацию в имени пользователя для решения который хост соединиться с автоматически: например, команда ssh username+machine1@example.com мог соединиться с Вашим единственным IP-адресом, и затем измененный сервер SSH там извлекает имя пользователя и устанавливает новую связь с username@machine1. Я не знаю ни о каком существующем программном обеспечении, которое помогло бы Вам сделать это; это должно было бы, вероятно, быть записано.


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

4
06.02.2014, 16:18
2 ответа

Для OSX это относится к Emacs 22.1.1; Fedora с Emacs 24 имеет такое же поведение.

В Emac'е ansi-term поддерживает 8 цветов. Это все, что определено ANSI, и "ansi-term" назван соответствующим образом. Описание терминала eterm-color в ncurses используется для этого типа терминала. Emacs устанавливает TERM в это значение (см. источник):

(defvar term-term-name "eterm-color"
  "Name to use for TERM.
Using \"emacs\" loses, because bash disables editing if $TERM == emacs.")

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

В то время как Emacs может использовать более 8 цветов в терминале, ansi-term этого не делает. Читая source, найдите term-ansi-current-color, и увидите, что есть только логика для 30-37, 39, 40-47 и 49:

   ;; Foreground
   ((and (>= parameter 30) (<= parameter 37))
    (setq term-ansi-current-color (- parameter 29)))

   ;; Reset foreground
   ((eq parameter 39)
    (setq term-ansi-current-color 0))

   ;; Background
   ((and (>= parameter 40) (<= parameter 47))
    (setq term-ansi-current-bg-color (- parameter 39)))

   ;; Reset background
   ((eq parameter 49)
    (setq term-ansi-current-bg-color 0))

Вы можете изменить палитру цветов, используемую вашим терминалом, но нет способа заставить ansi-term отличаться от этого (он будет использовать первые 8 цветов, даже если Emacs может использовать 256).

Дальнейшее чтение:

Для Emacs, отличных от ansi-term:

Также:

1
27.01.2020, 21:02

Я полагаю, что это - частично функция Вашего терминального типа для одного.

$ echo $TERM
xterm-256color

Это сообщение могло бы также быть достойное внимания, названное: Передача по каналу Ls Через Меньше С Цветами на Mac OS X. Также эта установка могла бы оказаться полезной.

  $ export LESS="-erX" 

  -or-

  $ export LESS="-eRX" 

Можно консультироваться со страницей справочника для less узнать больше о различных переключателях выше.

0
27.01.2020, 21:02
  • 1
    -R может быть предпочтителен законченный -r в этом случае. –  Stéphane Chazelas 06.02.2014, 17:08
  • 2
    Спасибо slm и @StephaneChazelas - Как я могу изменить те цвета затем? Иногда, я работаю меньше в оболочке в Emacs (где echo $TERM возвраты eterm-color). В обычном терминале я добираюсь xterm-256colorи в tmux я добираюсь screen. –  Amelio Vazquez-Reina 08.02.2014, 22:20
  • 3
    @user815423426 - частью окраски (ls вывод) управляют через эти файлы: /etc/DIR_COLORS*. Я не полагаю, что существует любой центральный ресурс, где можно управлять цветами, скорее необходимо управлять ими на приложение, такое как emacs, энергия, и т.д. –  slm♦ 08.02.2014, 22:26

Теги

Похожие вопросы