Трябва да стартирам процес в нов прозорец на конзолата. За macs намерих нещо подобно: Изпълнение команда в нов прозорец на Mac OS X терминал, където командата за изпълнение се предава като низ.
Така че направих метод, който при даден списък от низове (като конструктор на процеси), връща списъка от низове (крайната команда), който ще изпълни дадената команда в нов прозорец на конзолата. Бих могъл да добавя дадените низове с интервали, което ще работи през повечето време, но как да го избягам правилно? Например, мога да предам конструктора на процеси new String[] { "echo", "hello world" }
и той всъщност прави echo "hello world"
. И се занимава и с много други случаи (мисля).
Мисля, че обяснението е сложно, така че ето един псевдозапис:
public static String[] getConsoleCommand(String[] command) {
if operating system is Mac...
String commandString = concatenate command...
return new String[] { "osascript", "-e",
String.format("'tell application \"Terminal\" to do script \"%s\"'",
commandString.replace("'", "\\\'")) // escape single quote used in 'tell application...'
};
}