Não acredito que ninguém tenha mencionado o link que ainda não foi mencionado
Existe uma vantagem questionável. Se você tem um pipeline longo, parece um pouco mais ortogonal com o gato:
cat file | command1 | command 2 | command3
Agrupa todos os comandos juntos.
É claro que outros já disseram (e eu)
< file command1 | command2 | command3
Realiza praticamente a mesma coisa. Dito isso, o gato é muito pequeno e não trará o seu computador para baixo se você usá-lo quando você realmente não precisa.
Normalmente, usar cat
vs diretamente em um arquivo não muda nada, mas faz diferença para certos comandos que se importam se há vários arquivos como argumentos, como grep
. Caso em questão:
cat file1 file2 | grep SOMETHING
terá saída diferente de
grep SOMETHING file1 file2
Que terá os nomes de arquivos correspondentes na saída. Há momentos em que não quero os nomes dos arquivos, e é uma vantagem usar cat
.