Como invocar um comando shell do Linux a partir de Java

Eu estou tentando executar alguns comandos do Linux a partir de Java usando redirecionamento (> &) e pipes (|). Como o Java pode invocar?csh oubash comandos?

Eu tentei usar isso:

Process p = Runtime.getRuntime().exec("shell command");

Mas não é compatível com redirecionamentos ou canais.