java processbuilder终端宽度

标签 java ksh processbuilder rhel

所以我有一个 shell 脚本,当执行可执行文件时,它会显示与终端宽度一样宽的行。当我使用 ProcessBuilder 执行脚本时,它会自动仅返回前 80 个字符。我尝试了多种方法,例如将 stty rows 50 cols 132 添加到脚本中,或者尝试在 ProcessBuilder 中设置一些环境变量,但找不到更改进程终端宽度的方法。在 RHEL 上运行它。

    ProcessBuilder p = new ProcessBuilder(new String[] {"/bin/ksh",
    "myscript.ksh"});

    BufferedReader br = new BufferedReader(new InputStreamReader(p2.getInputStream()));
    String line;
    StringBuffer output = new StringBuffer();
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }

最佳答案

终端宽度由您使用的终端程序决定。每个终端程序都以不同的方式设置宽度(通常在某处的设置中)。如果它们响应任何类型的全局变量或命令序列,那么每个终端程序可能会有所不同(有些终端程序没有此功能)。不过,有些终端程序已经采用了一个标准解决方案。

唯一的方法是找到一个能够响应特定全局变量或命令序列的终端程序,并强制用户使用该特定终端程序调用应用程序。

最接近标准的解决方案是以下控制序列,它将调整某些终端仿真器的大小:

System.out.println("\e[8;50;100t")

上面的命令会将您的终端大小调整为 100x50

但是,上述内容并不适用于所有终端模拟器,有几个终端模拟器可以识别它。只需确保用户使用的是支持该标准的终端程序即可。

参见XTerm Control Sequences引用以获取更多信息。

关于java processbuilder终端宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49956554/

相关文章:

ksh - 检查文件是否存在于 ksh

unix - unix shell ksh 中的错误处理

linux - 将日志文件挂载到其他位置

Java:ProcessBuilder 更改路径

java - 调用已经适用于单选按钮的函数,以便打印详细信息

java - OpenGL - 构造形状的困难

java - Android 版 OUI 查找数据库

java - java中的jpeg地理定位

Java严格按顺序启动多个命令

java - 错误: the call causes portability problems because it has different locales