cat e pipe vs. redirecionamento [duplicado]

5

Qual é a diferença entre esses dois comandos?

cat /proc/uptime | awk '{print $1}'

< /proc/uptime awk '{print $1}'

Especificamente, como funciona o segundo comando? O operador de redirecionamento < não precisa ser acompanhado por um comando? O que significa redirecionar o conteúdo de um arquivo como esse?

    
por walksignison 03.09.2018 / 00:38

1 resposta

4

Em geral, foo < bar e < bar foo são equivalentes no script do bash. A qualquer momento em que < filename é processado pelo shell, significa que o comando ao qual está associado terá sua entrada padrão proveniente desse arquivo. Nenhum comando extra ou processo está envolvido com isso; o shell faz isso em si.

A execução de cat filename lê o conteúdo do arquivo especificado e grava-o na saída padrão. | entre dois comandos significa conectar a saída padrão do comando esquerdo à entrada padrão do comando correto.

Assim, ambos os seus comandos têm o mesmo efeito de enviar o conteúdo de /proc/uptime para awk, mas a primeira maneira inicia um processo cat extra para fazer isso.

    
por 03.09.2018 / 01:29