Muitos utilitários que trabalham com arquivos aceitam stdin (entrada padrão) como entrada em fluxo ou aceitam o nome do arquivo como um parâmetro. Seus exemplos < file
estão redirecionando a saída do arquivo para o utilitário. O arquivo foi aberto pelo shell e passado para o seu utilitário via stdin .
Por outro lado, com cat file
, cat está lidando com a abertura e a leitura do arquivo , e nenhum redirecionamento está envolvido.
ls
nunca lê um arquivo, portanto não é necessário um nome de arquivo como parâmetro para abrir e ler o arquivo (ele aceita máscaras de nome de arquivo). Para ls
, a ação de redirecionamento é, na verdade, ignorada porque nada no processo lê o arquivo aberto pelo shell ...
Para determinar como qualquer utilitário se comporta, basta digitar man utility-name
no terminal ... man é uma contração de manual ... por exemplo. man cat
apresenta-lhe o manual do gato