gpt4 book ai didi

java processbuilder终端宽度

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:28 26 4
gpt4 key购买 nike

所以我有一个 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/

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