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.