2011-09-28 54 views
2

关于主题,下面我如何从Java运行UNIX终端并向其发送命令?


Process proc = null; 
    try { 
     String[] cmdss= {"gnome-terminal"}; 


     proc = Runtime.getRuntime().exec(cmdss, null, wd); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

代码运行的终端形式的Ubuntu。

运行term term后,如何向终端发出命令?

例如:运行在终端和运行命令,如“LS”等

+0

你应该做任何你想用Java做的,而不是使用shell命令。 – SLaks

+0

嗨,我很想这样做,但我不认为这是我的选择。这是因为除了运行脚本之外,运行某些脚本之后,用户可能需要在终端中输入诸如y/n之类的命令。我不知道如何从java界面做到这一点。 –

+1

你正在做什么?你应该问一个单独的问题? – SLaks

回答

2

你可以给gnome-terminal命令行什么它将执行上的一些选项。

gnome-terminal -e /my/fortran/program 

-x选项可以让你大致相同的好处,但你可以在命令行拆分成单独的词。

-e-x这两个都可以运行带有可选参数的程序,同时将程序的标准输入和输出连接到终端。所以用户可以正确地与终端进行交互。

实施例:

gnome-terminal -x bash -c "ls; echo '<enter>'; read" 

这将打开终端并运行 “程序” bashbash将得到两个参数-cls; echo ....; read-c选项使bash解析并执行下一个参数。这将调用ls,然后echo ...然后read等待返回键。

在Java中,你必须将参数分割成适当像这样的数组:

String cmd[] = {"gnome-terminal", "-x", "bash", "-c", "ls; echo '<enter>'; read" }; 
+0

哇..谢谢..它的作品完全像我想.. –

+0

你也可以考虑使用预期的程序,以便可以将响应编写为交互式提示;这看起来像是你真正想要的。 – Kevin

+0

凯文,那是我的真正意图。但是,我不知道如何做到这一点,因为我是基于.Net/Windows的程序员,而不是java/Unix程序员。所以我对“期望”事物完全无能为力。 –