Por que a sintaxe reversa do redirecionamento de saída não atua como redirecionamento de entrada?

1

comando 1: cat file1 > file2 (sucesso)
comando 2: file2 < cat file1 (cat: nenhum arquivo ou diretório)

Eu só queria saber a sintaxe geral dos redirecionamentos de saída e entrada.
Se o redirecionamento pode acontecer ao arquivo ou fluxo, por que o comando 2 falha?

    
por Prem 23.02.2018 / 09:22

1 resposta

2

O redirecionamento em

cat file1 >file2

é um redirecionamento de saída, enquanto < especifica um redirecionamento de entrada.

A linha

file2 < cat file1

é o mesmo que

file2 file1 <cat

(não importa muito onde o redirecionamento realmente ocorre quando ele é manipulado pelo shell em sua própria etapa de análise e, em seguida, removido do comando real), o que significa "executar file2 com file1 como argumento e redirecionar o entrada padrão do arquivo cat ".

O erro vem do shell tentando abrir cat como um arquivo no diretório atual. O erro ocorre antes que o shell tente executar o comando file2 .

Relacionados: Como esse comando é legal? "> arquivo1 < arquivo2 cat"

    
por 23.02.2018 / 09:43