> ~/pipelab.txt obviamente pertence ao comando no mesmo lado do operador do pipeline | . Ou seja você redireciona a saída grep para o arquivo em vez de colocá-lo em sort :
grep tcp /etc/services | sort > ~/pipelab.txt
Eu gostaria de criar uma lista classificada de todos os serviços TCP encontrados no arquivo /etc/services , canalizar a saída do comando grep tcp /etc/services para o comando sort e redirecionar a saída desse canal para o arquivo ~/pipelab.txt .
Continuo recebendo uma mensagem de erro dizendo que minha saída está errada e não sei por quê.
Isso é o que tentei por último:
grep tcp /etc/services > ~/pipelab.txt | sort
Você está tentando redirecionar a saída de grep para um arquivo e para sort . Você não pode fazer isso, pelo menos não assim.
Em vez disso, você só quer alimentá-lo para classificar:
grep tcp /etc/services | sort
e, em seguida, você deseja redirecionar a saída classificada (ou seja, o que está saindo da classificação) para um arquivo, para que você coloque o redirecionamento após a ordenação:
grep tcp /etc/services | sort > ~/pipelab.txt
Ambos os pipes e redirecionamentos funcionam alterando para onde vai a saída do comando. Você teve dois deles brigando pela saída de grep (e, finalmente, o redirecionamento ganhou, e escreveu a saída não classificada em seu arquivo).