所以我有一个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);
}
答案 0 :(得分:0)
终端宽度由您使用的终端程序决定。每个终端程序都以不同的方式设置宽度(通常在某处的设置中)。如果它们响应任何类型的全局变量或命令序列,那么每个终端程序可能会有所不同(有些没有此功能)。但是,有一些终端程序采用了标准解决方案。
唯一的方法是找到一个响应特定全局变量或命令序列的终端程序,并强制用户使用特别的终端程序调用应用程序。
最接近标准的解决方案是以下控制序列,它将调整某些终端仿真器的大小:
System.out.println("\e[8;50;100t")
以上内容会将您的终端调整为100x50
然而,上述内容不适用于所有终端仿真器,有几种可以识别它。只需确保用户使用支持该标准的终端程序。
有关详细信息,请参阅XTerm Control Sequences参考。