java 我想直接交互运行bash,但不获取ANSI代码

ruarlubt  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(89)

我正在创建自己的基于Java的term程序,它可以很好地与SSH和Telnet连接配合使用。但现在我想像xterm或gnome-terminal那样打开本地直接连接。我用ProcessBuilder运行“bash -i -l”并使用getInputStream()/ getOutputStream()而且似乎起作用了。(我需要调用redirectErrorStream(true))我唯一的问题是bash似乎忽略了$TERM环境变量,并且没有生成任何ANSI代码。ls-la '缺少CR和颜色,而且它没有回显输入(就像它通过SSH连接所做的那样)。
我使用JCraft的JSch库并调用setPtyType(“vt 100”)来建立SSH连接。
我没有使用pty,需要吗?我想分配一个pty需要本地代码。如果是这样,pty是如何工作的?
我试过看xterm的源代码,但那是一片混乱。现在我想起来为什么我再也不回去看C代码了。
有没有一个简单的解决办法。
谢谢。

vngu2lb8

vngu2lb81#

ls而言,您的ls可能是ls --color=auto的别名(您可以通过在终端中运行alias ls来检查这一点)。在这种情况下,ls将做出是否输出颜色代码的有根据的猜测。从man ls
使用颜色来区分文件类型在默认情况下和--color=never下都是禁用的。使用--color=auto,ls仅在标准输出连接到终端时才会发出颜色代码。
许多其他程序可能会做这种事情。
就你对终端仿真的一般研究而言,“终结者”似乎做了一些pty仿真(尽管使用了JNI库),也许你可以从中得到一些想法:
http://software.jessies.org/terminator/

相关问题