gpt4 book ai didi

java - ssh客户端如何区分文本颜色

转载 作者:行者123 更新时间:2023-12-01 13:40:58 25 4
gpt4 key购买 nike

我正在尝试使用 java 库“sshj”编写一个简单的 ssh 客户端。

try {
session = ssh.startSession();
try {
final Command cmd = session.exec("ls");
System.out.println(IOUtils.readFully(cmd.getInputStream()).toString());
} finally {
session.close();
}
} finally {
ssh.disconnect();
}

但是,我的问题是我无法弄清楚 ssh 客户端(如 putty 或 iterms)如何区分文本颜色(例如,vi 中的颜色或命令“ls”结果的颜色)。

我用“ssh 协议(protocol)文本颜色”之类的查询在 Google 上进行了一些搜索,但找不到令人满意的结果。

我找到了一些 ssh java 库,如 jsch、sshj 和 sshtools,以及我使用 sshj 因为它的代码很短。但如果您对这些库有任何意见,请随时分享给我:)

最佳答案

ssh 只是在服务器和客户端之间转发(并加密/解密)字节。在大多数情况下,服务器运行 unix shell,“字节”只是来自该 shell 的 stdin/stdout/stderr。

如果您在该 shell 中运行 vim,则字节由 vim 生成。为了执行诸如颜色(语法突出显示)、光标定位等特殊操作,vim 将发送转义序列,这些序列是以“ESCAPE”字节(十六进制 27)开头的一系列字节。

转义序列源于“绿色终端”时代,并被物理终端或终端模拟器解释为“指令”,例如腻子。

Vim 和其他复杂的终端程序将查找 $TERM 环境变量来确定您正在使用的客户端终端。根据该值,转义序列(认为与终端相关的指令)将会不同。

您可以在互联网上找到许多终端转义序列列表,例如对于ANSI:https://en.wikipedia.org/wiki/ANSI_escape_code

关于java - ssh客户端如何区分文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20780401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com