Não há grande diferença visível no seu caso de teste. A mais óbvia seria a mensagem de erro obtida se não houver nenhum arquivo chamado myfile.txt
no diretório atual ou se você não tiver permissão para lê-lo.
No primeiro caso, cat
irá reclamar e no último caso, seu shell irá, mostrando claramente qual processo está tentando abrir o arquivo, cat
no primeiro e o shell no último. / p>
$ cat myfile.txt
cat: myfile.txt: No such file or directory
$ cat < myfile.txt
ksh93: myfile.txt: cannot open [No such file or directory]
Em um caso mais geral, a principal diferença do uso de redirecionamentos não pode ser usada para imprimir o conteúdo de mais de um arquivo, que é, afinal, o propósito original do cat
(ou seja, cat enate) comando. Observe que o shell irá, de qualquer maneira, tentar abrir todos os arquivos passados como entrada redirecionada, mas na verdade apenas passará o último para cat
, a menos que você use zsh
e seu multios
"zshism".
$ echo one > one
$ echo two > two
$ cat one two # cat opens one, shows one, opens two, shows two
one
two
$ cat < one < two # sh opens one then opens two, cat shows stdin (two)
two
$ rm one two
$ echo one > one
$ cat one two # cat opens and shows one, fails to open two
one
cat: two: No such file or directory
$ cat < one < two # the shell opens one then opens two, fails and
# displays an error message, cat gets nothing on stdin
# so shows nothing
ksh93: two: cannot open [No such file or directory]
Em um sistema padrão, o shell e o cat
não têm diferença nos direitos de acesso a arquivos, portanto, ambos falharão igualmente. Usar sudo
para aumentar os privilégios de cat
fará uma grande diferença no comportamento, como Thomas Dickey respondeu e anexou comentários já sugeridos.