在终端和 SSH 上禁用颜色

jwb*_*ley 12 colors ssh terminal

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

在此处输入图片说明

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

在此处输入图片说明

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

有什么我可以在本地更改的,以便当我从本地机器或通过中间机器通过 SSH 连接到 pfSense 框时,我的客户端将忽略远程颜色设置。理想情况下,我只想保持黑白,两种色调标准背景和文字颜色?

ger*_*ijk 8

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

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

  • 事实上,SSH 的设计初衷并不是干扰 tty 上的数据。SSH 设置了一个可以运行它的通道,我认为它*不应该*涉及通过该通道更改数据。但是,它确实提供了上下文和元数据,例如在此类通道的设置时间期间哪些环境变量从客户端传递到服务器。 (2认同)

Sté*_*las 8

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

TERM=xterm-old
Run Code Online (Sandbox Code Playgroud)

基本上,您需要一个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 ...
Run Code Online (Sandbox Code Playgroud)

这将在每次尝试设置前景色时启用粗体,并在每次尝试设置背景色时反转

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


小智 2

键入以下命令将其删除:

$ ls --color=none
Run Code Online (Sandbox Code Playgroud)

或使用unalias以下方法删除它:

$ unalias ls
Run Code Online (Sandbox Code Playgroud)