java processbuilder 终端宽度
java processbuilder terminal width
所以我有一个 shell 脚本,当执行一个可执行文件时,它会显示与终端宽度一样宽的行。当我使用 ProcessBuilder 执行脚本时,它会自动 returns 只有前 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 参考资料。
所以我有一个 shell 脚本,当执行一个可执行文件时,它会显示与终端宽度一样宽的行。当我使用 ProcessBuilder 执行脚本时,它会自动 returns 只有前 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 参考资料。