将 ProcessBuilder 命令翻译成 Linux 可以理解的东西

Translating ProcessBuilder command into something Linux can understand

你好堆栈溢出!

我目前正在开发一个 Java 程序,它本质上是一个用于龙与地下城风格冒险的数字化角色 sheet。该程序大量使用了我制作的 ClearScreen() 方法,该方法使用了流程构建器,如下所示:

new ProcessBuilder( "cmd", "/c", "cls" ).inheritIO().start().waitFor();

最近我了解到我的一位玩家有一个 Mac,因此我需要将此进程构建器使用的 cmd 命令转换为它的 Mac/Linux 等效命令。我事先已经做了一些研究,并设法构建了以下 ProcessBuilder:

new ProcessBuilder("terminal","","clear");

但是,我不知道 /c 的等价物是什么,这是一个导致 CMD 在命令执行后关闭的参数。因此,我想帮助填写缺少的参数(或者可能是实现相同结果的更有效方法)。提前致谢!

(另外,对于任何误用的术语,我提前表示歉意^^;我仍在学习如何在 Java 中编程,而且我从未拥有过 Mac,所以我在这里有点摸不着头脑。我应该澄清一下,该程序使用名为 rubberglove.bat.)

.bat 文件从 Windows 命令提示符界面运行

在 MacOS(以及 GNU/Linux 和 *BSD)上,clear 是一个独立的程序,不需要额外的 shell 或程序的服务。直接调用即可:

new ProcessBuilder("clear").inheritIO().start().waitFor();

或者简单地打印等效的 ANSI 转义码以清除屏幕并将光标设置到原点。这适用于所有标准的类 Unix 终端,本质上就是 clear 最终做的事情:

System.out.print("\u001B[H\u001B[J");