O trabalho de cat é con cat enate tudo o que obtém e depois imprimi-lo no stdout, mas muitas vezes é usado para imprimir o conteúdo de um único arquivo (o que é claro é apenas concatenar o conteúdo de todos os arquivos fornecidos a ele e, em seguida, gravá-lo no stdout). stdout (saída padrão) é apenas programas geralmente escrevem dados de saída. (Existem programas (como dd ) que gravam seus dados de saída para stdout, a menos que sejam declarados diferentemente por parâmetros e também há o canal de erro padrão stderr que os programas gravam quando ocorre um erro.)
cat pode receber dados fornecidos via stdin (entrada padrão) ou dados de arquivos passados como parâmetros.
O que você está fazendo com cat sth é chamar cat com o parâmetro único sth telling cat para gravar tudo no arquivo sth para stdout. Você pode adicionar mais nomes de arquivos e ver se o conteúdo dos arquivos é concatenado e depois gravado no stdout.
cat < sth altera o stdin de cat para o conteúdo do arquivo sth antes de chamar cat . cat , em seguida, apenas lê tudo do stdin e escreve para stdout.
Em ambos os casos, cat grava o conteúdo do arquivo sth em stdout. Você pode ler mais sobre este aqui e também digitar man cat em um terminal para ler a página do manual de cat descrevendo o que faz.
Observe que o conteúdo de sth é lido pelo usuário com o qual você está logado (quem você está logado como no terminal não é necessariamente quem você está logado como na sessão gráfica (se houver)), enquanto os programas podem ser executados com direitos diferentes, escrevendo sudo antes deles e depois lendo com os direitos do usuário que os executou. Isso pode levar a resultados diferentes porque o usuário com o qual você fez login e o usuário com o qual você alternou com sudo (não necessariamente root , você pode especificar de outra forma) pode ter direitos de acesso diferentes no arquivo que está tentando ler de.