【问题标题】:I want to run bash directly interactively but not getting ANSI codes我想以交互方式直接运行 bash 但不获取 ANSI 代码
【发布时间】:2012-06-16 16:59:29
【问题描述】:

我正在创建自己的基于 Java 的学期程序,它与 SSH 和 Telnet 连接配合得很好。 但是现在我想像 xterm 或 gnome-terminal 这样打开一个本地直接连接。 我用 ProcessBuilder 运行“bash -i -l”并使用 getInputStream()/getOutputStream(),它似乎工作。 (我需要调用redirectErrorStream(true)) 我唯一的问题是 bash 似乎忽略了 TERM 环境变量并且没有生成任何 ANSI 代码。我得到一个提示,但运行 'ls -la' 缺少 CR 和颜色。此外,它不会回显输入(就像通过 SSH 连接一样)。

我使用 JCraft 的 JSch 库并调用 setPtyType("vt100") 进行 SSH 连接。 直接运行 bash 怎么办?

我没有使用 pty,需要吗?我认为分配一个 pty 需要本机代码。 如果是这样,pty 是如何工作的。

我试图查看 xterm 源代码,但那是一团糟。现在我记得为什么我永远不会回到 C 代码了。

有没有简单的解决办法。

谢谢。

【问题讨论】:

    标签: java bash ansi


    【解决方案1】:

    ls 而言,您的ls 可能是ls --color=auto 的别名(您可以通过在终端中运行alias ls 来检查)。在这种情况下, ls 将做出有根据的猜测是否输出颜色代码。来自man ls

    默认禁用使用颜色区分文件类型 并使用--color=never。使用 --color=auto,ls 发出颜色代码 仅当标准输出连接到终端时。

    许多其他程序可能会做这种事情。

    就您对终端仿真的一般研究而言,“终结者”似乎做了一些 pty 仿真(尽管使用 JNI 库),也许您可​​以从以下方面获得一些想法:

    http://software.jessies.org/terminator/

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 2018-03-17
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      相关资源
      最近更新 更多