如何在Linux中打开命令终端?

use*_*094 7 java linux terminal

我想使用Java代码在Linux机器上打开终端(命令提示符).我知道如何在Windows中打开命令提示符.我在windows中使用了以下代码

String command= "cmd c/start cmd.exe"
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
Run Code Online (Sandbox Code Playgroud)

我在Linux中需要相同的东西.

谢谢你的回答.我也想运行一个sh脚本.

以下代码是否有效.

String command= "usr/bin/xterm myshell.sh";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
Run Code Online (Sandbox Code Playgroud)

bat*_*rat 8

在Linux中,有许多终端模拟器允许您与各种shell进行交互.每个shell基本上都是一个了解Linux命令的命令解释器(我猜想GNU和Unix命令更正确......).终端仿真器为shell提供了一个接口(窗口)以及一些其他使用命令提示符的工具.要打开终端窗口,您只需修改命令字符串,如下所示: -

import java.io.*;

class TerminalLauncher
{
    public static void main(String args[]) throws IOException
    {
        String command= "/usr/bin/xterm"; 
        Runtime rt = Runtime.getRuntime();  
        Process pr = rt.exec(command);
    }
}
Run Code Online (Sandbox Code Playgroud)

我做的基本假设是你要打开xterm,它几乎可以在任何系统上使用(当然安装了X).您可能想要打开另一个终端模拟器,如rxvt,eterm,aterm,gnome-terminal或konsole.也可以修改命令字符串以使用不同的shell,如zsh.我建议您在您选择的终端不存在时捕获异常并通过要求用户安装它来处理它.更好的解决方案是接受用户首选shell的命令行参数,或者使用用户可以更改的配置文件,以使脚本打开他/她选择的shell.

注意
1.正如其他人已经指出的那样,xterm(或您选择的任何其他终端)可能不在指定的路径(/ usr/bin/...)中,甚至可能没有安装,因此您可能不得不使用一些奇特的命令字符串(例如:在启动之前通过grep查找通过grep获取xterm的路径),这不是一个好主意.我认为最好的方法是让用户配置整个事情.

2.我对这个答案(由ypnos)发表了评论,建议我避免使用绝对路径,而是依赖于PATH环境变量中的命令.我不得不说我同意.在这种情况下,命令字符串应为 -

String command = "xterm"
Run Code Online (Sandbox Code Playgroud)

请查看注释,因为它还指出了使用find的问题.

  • 不要在Linux上使用绝对路径来获取二进制文件.该命令观察PATH变量.如果您只是在"xterm"上调用它,则会找到xterm(如果它存在于系统中). (2认同)

Aln*_*tak 4

Linux 上没有单一的标准“终端”命令 - 可用的命令取决于存在的 GUI(即 KDE 或 Gnome 等)。

应该能够依赖xterm存在,但在现代 Linux 变体中,这不是选择的终端:

String command= "/usr/bin/xterm";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
Run Code Online (Sandbox Code Playgroud)

当然,“xterm”可能不在那个特定的路径中......