Ele canaliza o conteúdo de test.txt
para a entrada de java myfile.java grammar.pcfg
e, em seguida, redireciona o fluxo de saída do comando java
para test1.txt
e seu fluxo de erro para test2.txt
.
Você pode achar um pouco mais fácil entender se ele é entre parênteses, como este (note que isso é para clareza e não é uma sintaxe válida):
(cat test.txt | java myfile.java grammar.pcfg) > test1.txt 2> test2.txt
Isso deixa mais claro que o primeiro arquivo de texto é um arquivo de entrada, enquanto os dois últimos são arquivos de saída.
(No entanto, o java myfile.java
pouco realmente não faz sentido para mim - java
é chamado nos arquivos .class, não nos arquivos .java.)