Вимкнути кольори на терміналі та SSH


11

Моя локальна машина Linux має такий кольоровий термінальний вихід;

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

Коли я SSH в поле pfSense / BSD, він змінює кольори, як це;

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

Навіть коли я SSH переходить на машину, яка не має кольорового локального термінального виходу, а SSH звідти до цього поля pfSense / FreeBSD, вона дозволяє кольоровий вихід і починає видавати небажаний кольоровий вихід /

Чи можу я щось змінити локально, коли я підключу SSH до вікна pfSense з моєї локальної машини або через посередницьку машину, мій клієнт ігнорує віддалені параметри кольору. В ідеалі я хочу залишатися лише чорно-білим, стандартним кольором тла та кольором тексту лише двома тонами?


Який термінальний додаток ви використовуєте?
gertvdijk

1
Тут я запускаю Mint Linux 13, тому це Xfce Terminal Emulator 0.4.8.
jwbensley

Я знаю, що це не те, що ви просите, але чи розглядали ви, як змінити налаштування терміналу на білий [або світло-сірий] текст на чорному тлі? Це основна колірна гамма, з якою більшість речей створена для роботи. Або ви можете змінити параметри підказок на віддаленій машині (можливо, в .bash_profile), щоб вони мали кращі кольори або взагалі відсутні кольори.
Випадково832

1
Зазвичай я роблю щось на кшталт того, TERM=xterm-mono ssh user@hostщоб отримати це налаштування у віддаленому середовищі.
ott--

Відповіді:


7

Кольори у вашому терміналі з'являються через те, що tty надсилає закодовані ANSI послідовності управління, щоб сказати вашому терміналу змінити кольори. Деякі, якщо не більшість термінальних програм, можна налаштувати ігнорувати це та просто відображати весь текст одним кольором.

У xterm, ви можете використовувати -cmопцію. Для Konsole можна змінити відображення всіх кольорів на однакові. У вашій термінальній програмі XFCE можуть бути подібні параметри.


Ця відповідь може допомогти в деяких випадках, але насправді це не відповідь. Як згадувалося, "Кольори у вашому терміналі з'являються через те, що tty надсилає кодовані ANSI послідовності управління, щоб сказати вашому терміналу змінити кольори". Оскільки SSH може надавати TTY, SSH також повинен мати можливість ігнорувати кольори. Будь-яка ідея, як це робиться?
Patrik

SSH не розроблений так, щоб перешкоджати передачі даних по tty. SSH встановлює канал, на якому ви можете запустити його, я не думаю, що він коли-небудь повинен залучати до зміни даних по цьому каналу. Однак він надає контекст і метадані, такі як змінні середовища передаються від клієнта до сервера протягом часу налаштування такого каналу.
gertvdijk

7

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

TERM=xterm-old

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

Крім того, ви можете використовувати GNU screenдля відключення кольорів, наприклад (zsh синтаксис):

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

Це дозволить отримати жирний шрифт для кожної спроби встановлення кольору переднього плану та зворотний для кожної спроби встановити фон.

Я думаю, що все зводиться до того, що FreeBSD передбачає, що фон терміналу чорний (або принаймні темний). Якщо ви використовуєте xtermзамість xfce-terminal, ви можете динамічно змінювати колір тла та переднього плану та / або окремі кольори, щоб встановлювати різні кольорові профілі. Це робиться за допомогою послідовностей евакуації, але ви також можете використовувати xtermcontrolкоманду, яка полегшує роботу.


Спробував це - не працює для мене. export TERM=vt100попередній ls --colorвсе ще показує кольоровий вихід.
gertvdijk

@gertvdijk Добре. Здається, у GNU ls є помилка, яка за замовчуванням жорсткі коди vt100є терміналом із підтримкою кольорів. Я змінив те, xterm-oldщо не має цієї проблеми, але може не мати терміна в FreeBSD.
Стефан Шазелас

Ну, це не заважає іншим програмам виведення кольору , а також - тобто byobu. Я на Ubuntu 12.04 btw.
gertvdijk

1
@gertvdijk. Як я вже сказав. Він працює лише для добре сприйнятих програм, які використовують $TERMі бази даних termcap / terminfo (за допомогою curses або інших термінальних API) замість жорсткого кодування послідовностей виходу.
Стефан Шазелас

що я можу використати для видалення всіх послідовностей евакуації, які можуть змінити стан терміналу після EOF?
Янус Троельсен

2

Введіть таку команду, щоб видалити її:

$ ls --color=none

або скористайтеся unaliasдля його видалення:

$ unalias ls

1
Хіба це не тільки для lsкомади?
jwbensley

ls чужий на "ls --color = tty"
Лен

Так. Я знаю. Але весь мій термінальний вихід - це кольоровий вихід, а не лише lsкоманда, так як згідно з моїм попереднім коментарем: хіба це не просто перестане lsвиробляти кольоровий вихід, все інше все одно буде кольоровим?
jwbensley

так, лише ls порція
Лен

1
Ви використовуєте xterm? xterm -cm
Лен

1

Якщо ви не хочете змінювати ваш ~ / .bashrc, який, я впевнений, містить щось на кшталт export PS2=.....+colors......:

На консолі linux спробуйте TERM=linux-m1bабо TERM=linux-m2отримати монохромний "Сірий / Білий / Чорний і тьмяний" для linux-m1b або "Зелений / Білий / Чорний і Синій" (vintage!) Для linux-m2 ...

За допомогою 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

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