Há um erro de digitação no seu código de exemplo que eu acabei de abordar primeiro. filename | ... não fará nada além de soltar um erro e depois confundir a coisa do outro lado do pipe ... a menos que esse nome de arquivo também seja um executável global e então não esteja fazendo o que você queria.
Você precisaria de cat filename | ... .
Apenas para turvar as águas, sort também pode usar um nome de arquivo como argumento. Você poderia (e deveria, se este é o seu caso de uso real) apenas executar sort filename > sortedfilename .
De qualquer forma, voltemos a redirecionamentos ...
O redirecionamento de entrada ( < ) lê um arquivo e canaliza para stdin . Para responder à sua pergunta, é diretamente equivalente a cat filename | .
O comando sort procura por stdin em vez de um argumento de nome de arquivo e faz a classificação e direciona para stdout . O redirecionamento de saída ( > ) pode ser usado para enviar isso para um arquivo em vez da tela.
Se você realmente quiser surpreender, leia o capítulo sobre o redirecionamento de E / S do TLDP