禁用终端和 SSH 上的颜色

禁用终端和 SSH 上的颜色

我的本地 Linux 机器有这样的彩色终端输出;

在此输入图像描述

当我通过 SSH 连接到 pfSense/BSD 盒子时,它会像这样改变颜色;

在此输入图像描述

即使当我通过 SSH 连接到一台没有彩色本地终端输出的机器,并从那里通过 SSH 连接到这个 pfSense/FreeBSD 盒子时,它也会启用彩色输出,并开始产生不需要的彩色输出/

我是否可以在本地更改某些内容,以便当我从本地计算机或通过中间计算机 SSH 到 pfSense 框时,我的客户端将忽略远程颜色设置。理想情况下,我只想保持黑白、两种色调标准背景和文本颜色?

答案1

将变量更改TERM为兼容但不支持颜色的某个条目可能会起作用。喜欢:

TERM=xterm-old

基本上,您需要一个TERMFreeBSD 系统已知的 termcap 或 terminfo 数据库,其中TERM=the-term tput colors不返回正数,而对于 GNU ls,则需要一个dircolors -p | grep -x 'TERM the-term'不返回任何值的数据库。无论终端是否声称支持它,它可能仍然不适用于输出颜色转义序列的应用程序。

或者,您可以使用 GNUscreen禁用颜色,例如(zsh 语法):

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

这将使大胆的每次尝试设置前景色和撤销每一次尝试设置背景。

我认为这一切都归结为 FreeBSD 假设终端背景是黑色的(或者至少是黑色的)。如果您使用xterm而不是xfce-terminal,则可以动态更改背景和前景色和/或单个颜色以设置不同的颜色配置文件。这是通过转义序列完成的,但您也可以使用xtermcontrol更容易的命令。

答案2

终端中出现颜色是因为 tty 发送 ANSI 编码的控制序列来告诉终端更改颜色。一些(如果不是大多数)终端应用程序可以配置为忽略这一点并仅以一种颜色显示所有文本。

在 中xterm,您可以使用该-cm选项。对于 Konsole,可以将所有颜色的映射更改为相同。您的 XFCE 终端应用程序可能有类似的选项。

答案3

如果您不想修改 ~/.bashrc 我确信它包含类似的内容export PS2=.....+colors......

在 Linux 控制台上,尝试TERM=linux-m1bTERM=linux-m2将单色设置为 linux-m1b 的“灰色/白色/黑色和暗淡”或 linux-m2 的“绿色/白色/黑色和蓝色”(复古!)...

使用 Putty(有一个适用于 Mac 用户的端口),使用TERM=putty-m1bandTERM=putty-m2相反...

这将完全满足您的需要,但是:您将需要一个最近的 terminfo 数据库,或者在必要时从那里获取它:wget http://canal.chez.com/linux.ti ; tic -x linux.ti

亚历克斯. PS:xterm-mono 似乎不再存在了。

答案4

你应该能够让你的终端模拟器和环境相信它一开始就不能支持颜色,假设你的 GNU/Linux 系统没有忽略这些规则:

unset LS_COLORS
TERM=xterm-mono
export TERM

尝试使用TERM=vt100orTERM=xterm-mono之类的东西htop,您应该立即看到区别。

top您还可以通过按 小写尝试切换颜色来快速测试z


或者,通过结合其他一些贡献者方法,您可以获得“无颜色”终端定义 (-1) 的列表并选择一个:

$ find /lib/terminfo -type f -exec sh -c 'for fx do T=`basename "$fx"` ;echo -n "$T ";TERM=$T tput colors ;done' find-sh {} + | sort -V | grep '\-1'
dumb -1
mach -1
mach-bold -1
mach-gnu -1
rxvt-basic -1
sun -1
vt52 -1
vt100 -1
vt102 -1
vt220 -1
xterm-mono -1
xterm-r5 -1
xterm-r6 -1

相关内容