O nome do arquivo de saída é sempre o nome original com a extensão alterada (a menos que você especifique algo diferente com opções de comando) para que você possa fazer isso em vez de canalizar.
tex file.tex; dvips file.dvi; ps2pdf file.ps
Isso executa os comandos um após o outro. Eu não acho que o comando tex tenha qualquer forma de produzir o resultado de seu processamento para stdout
, então você não pode fazer o piping com ele.
EDITAR:
De acordo com a sugestão de Jeff, essa é uma maneira melhor, pois os comandos restantes são executados apenas se o comando anterior retornar um status de saída bem-sucedido, ou seja, status 0.
tex file.tex && dvips file.dvi && ps2pdf file.ps