Отключить цвета на терминале и SSH

11

Моя локальная машина с Linux имеет цветной вывод терминала, подобный этому;

введите описание изображения здесь

Когда я подключаю SSH к блоку pfSense / BSD, он меняет цвета следующим образом;

введите описание изображения здесь

Даже когда я отправляю SSH к машине, у которой нет цветного локального терминала, и SSH оттуда к этой коробке pfSense / FreeBSD, она разрешает цветной вывод и начинает выдавать нежелательный цветной вывод /

Есть ли что-то, что я могу изменить локально, чтобы при подключении SSH к коробке pfSense с локального компьютера или с компьютера-посредника мой клиент игнорировал настройки удаленного цвета. В идеале я хочу остаться только в черно-белом, двухцветном стандартном фоне и цвете текста?

jwbensley
источник
Какое терминальное приложение вы используете?
gertvdijk
1
Здесь я использую Mint Linux 13, так что это Xfce Terminal Emulator 0.4.8.
jwbensley
Я знаю, что это не то, о чем вы просите, но рассматривали ли вы вопрос об изменении настроек терминала на белый [или светло-серый] текст на черном фоне? Это основная цветовая схема, с которой работает большинство вещей. Или вы можете изменить настройки подсказок на удаленном компьютере (возможно, в .bash_profile), чтобы иметь лучшие цвета или вообще не использовать их.
Random832
1
Обычно я делаю что-то подобное TERM=xterm-mono ssh user@hostв удаленной среде.
ot--

Ответы:

7

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

В xterm, вы можете использовать -cmопцию. Для Konsole можно изменить отображение всех цветов на одно и то же. Ваше приложение терминала XFCE может иметь аналогичные параметры.

gertvdijk
источник
Этот ответ может помочь в некоторых случаях, но на самом деле это не ответ. Как уже упоминалось, «цвета в вашем терминале появляются, потому что tty отправляет управляющие последовательности в кодировке ANSI, чтобы сообщить вашему терминалу об изменении цвета». Поскольку SSH может предоставлять TTY, для SSH также должна быть возможность игнорировать цвета. Есть идеи, как это сделать?
Патрик
На самом деле SSH не предназначен для вмешательства в данные через tty. SSH устанавливает канал , на котором вы можете запустить его, я не думаю , что это должно когда - либо включать в изменении данных по этому каналу. Однако он предоставляет контекст и метаданные, например, какие переменные среды передаются от клиента к серверу во время установки такого канала.
gertvdijk
7

Изменение TERMпеременной на некоторую запись, которая совместима, но не имеет поддержки цвета, может работать. Подобно:

TERM=xterm-old

По сути, вам нужна TERMизвестная системой FreeBSD база данных termcap или terminfo, для которой TERM=the-term tput colorsне возвращается положительное число, и для GNU ls, для которой dircolors -p | grep -x 'TERM the-term'ничего не возвращается. Это может все еще не работать для приложений, которые выводят цветовые escape-последовательности независимо от того, заявляет ли терминал, поддерживает ли это или нет.

В качестве альтернативы вы можете использовать GNU screenдля отключения цветов, например (синтаксис zsh):

screen -c =(printf %s\\n "termcapinfo * 'AF=\E[1m:AB=\E[7m'") ssh ...

Это включит жирный шрифт для каждой попытки установить цвет переднего плана и обратный для каждой попытки установить цвет фона.

Я думаю, что все сводится к тому, что FreeBSD предполагает, что фон терминала черный (или, по крайней мере, темный). Где вы используете xtermвместо xfce-terminal, вы можете динамически изменять цвет фона и переднего плана и / или отдельные цвета, чтобы установить различные цветовые профили. Это делается с помощью escape-последовательностей, но вы также можете использовать xtermcontrolкоманду, которая делает это проще.

Стефан Шазелас
источник
Попробовал это - не работает для меня. export TERM=vt100предыдущий по- ls --colorпрежнему показывает цветной вывод.
gertvdijk
@gertvdijk Хороший вопрос. Кажется, есть ошибка в GNU ls, которая по умолчанию жестко кодирует vt100как терминал с поддержкой цвета. Я изменил то, xterm-oldчто не имеет этой проблемы, но может не иметь записи terminfo во FreeBSD.
Стефан Шазелас
Что ж, это не мешает другим программам выводить цвет, то есть byobu. Я на Ubuntu 12.04, кстати.
gertvdijk
1
@gertvdijk. Как я сказал. Он работает только для программ с хорошим поведением, которые используют $TERMбазы данных termcap / terminfo (через curses или другие терминальные API) вместо жесткого кодирования escape-последовательностей.
Стефан Шазелас
Что я могу использовать, чтобы удалить все escape-последовательности, которые могут изменить состояние терминала после EOF?
Янус Троелсен
2

Введите следующую команду, чтобы удалить его:

$ ls --color=none

или используйте unaliasдля его удаления:

$ unalias ls
Len
источник
1
Разве это не только для lsзапятой, хотя?
jwbensley
У ls есть псевдоним "ls --color = tty"
Лен,
Да. Я знаю. Но весь вывод моего терминала - цветной вывод, а не только lsкоманда, как и в моем предыдущем комментарии: разве это не остановит lsвыдачу цветного вывода, все остальное все равно будет цветным?
jwbensley
да только часть ls
Len
1
Вы используете Xterm? xterm -cm
Лен,
1

Если вы не хотите изменять ваш ~ / .bashrc, который, я уверен, содержит что-то вроде export PS2=.....+colors......:

На Linux консоли, попробуйте либо TERM=linux-m1bили TERM=linux-m2получить монохромное как «серый / белый / черный и Dim» для Linux-M1b или «Зеленый / белый / черный и синий» (винтаж!) Для Linux , м2 ...

С Putty (есть порт для пользователей Mac) используйте TERM=putty-m1bи TERM=putty-m2вместо этого ...

Это будет делать именно то, что вам нужно, но: вам понадобится свежая база данных terminfo для этого или получите ее оттуда, если это необходимо: wget http://canal.chez.com/linux.ti ; tic -x linux.ti

Алекс. PS: xterm-mono, кажется, больше не существует.

Александр МОНТАРОН
источник
-1

Сначала проверьте псевдоним по умолчанию:

alias

alias ls-'ls --color=auto

Если не работает, и вам нужно быстро обойти. Попробуйте это lsи awkтруба:

vi /usr/local/bin/list
#!/bin/bash
ls $1
exit

установить завивки 744.
Одним из безопасных мест для этого было бы /usr/local/bin убедиться, что ваш PATH включает /usr/local/bin.

Снова используйте усмотрение.

Одна вещь ... цвета предназначены для пометки каталогов ... отключение ls="ls --color=auto"листьев только имен ... ls -aFили ls -Fдобавление имен каталогов с помощью /. Поэтому я бы предложил, чтобы вы знали. Вы могли alias ls="ls -aF"или alias ls="ls -F".

Скот
источник
2
Как этот ответ дает ответ на исходный вопрос?
Jwbensley
Добро пожаловать в переполнение стека! Я рекомендую вам взять тур .
Стивен Раух