将 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");
你好堆栈溢出!
我目前正在开发一个 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");