Вот что вам нужно сделать:
String command = "nm -l file1.o > file1.txt";
Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", command});
Следующий «простой ответ» НЕ РАБОТАЕТ :
String command = "/bin/sh -c 'nm -l file1.o > file1.txt'";
Process p = Runtime.getRuntime().exec(command);
потому что метод exec(String)
наивно разбивает свою строку, используя пробел в качестве разделителя и игнорируя любые кавычки. Таким образом, приведенный выше пример эквивалентен предоставлению следующего списка команд / аргументов.
new String[]{"/bin/sh", "-c", "'nm", "-l", "file1.o", ">", "file1.txt'"};