从java程序运行linux命令txl

时间:2013-07-23 11:02:55

标签: java shell command-line

我知道我们可以在java程序中运行linux终端命令,如下面的代码显示主目录的“ls”命令。

String[] cmd1 =  {
        "/bin/sh",
        "-c",
        "cd ../.. && ls"};
        Process child1 = Runtime.getRuntime().exec(cmd1);
        child1.waitFor();

final BufferedReader is = new BufferedReader(new InputStreamReader(child1.getInputStream()));
        String line;
        while ((line = is.readLine()) != null) {

            System.out.println("output is: "+line);
        }

但我不知道“/ bin / sh”和“-c”是什么意思?我在网上搜索过,有人用“bash”或者其他人。如果我只将命令作为“cd ../ ..&& ls”运行,我将得到相同的结果。

所以如果终端中有一个命令为“txl -o output inputFile”,其中“txl”是安装的工具,如何在java中写入?我试过了

String[] cmd1 =  {
        "/bin/sh",
        "-c",
        "cd ../.. && txl -o output inputFile"};

但无法得到结果。我添加“cd ../ ..”首先从工作空间转到主目录,因为txl安装在home bin目录中。

有人能给我一些建议吗?

编辑:

我犯了一个愚蠢的拼写错误,这种格式的命令有效!

2 个答案:

答案 0 :(得分:0)

你可以找到here ls中每个参数的内容:

-c
 with -lt: sort by, and show, ctime (time of last modification of file status information) with -l: show ctime and sort by name otherwise: sort by ctime

为了在java中执行程序并等待它完成,你可以使用this post

答案 1 :(得分:0)

/bin/sh是一个程序,这是shell,选项-c指定以下是shell要执行的命令(这是cmd1的第三个“行”:{ {1}})

编辑:

在这种情况下执行shell是必要的,仅执行cd ../.. && ls将不起作用,因为cd ../.. && ls&&之间的cd之类的运算符不被Java但是由shell。