Redirecionando a saída do apt-get

2

Portanto, há alguns resultados do apt-get que não consigo redirecionar para nenhum outro lugar. Aqui está uma amostra do que vejo:

sudo apt-get -qq -y --force-yes install cowsay 2>&1 > /tmp/tmp.txt

Este é um exemplo de comando que estou executando no 16.04. Estou incluindo o --force-yes aqui para simular um aviso de apt para uso futuro. agora espero que este comando redirecione tudo para /tmp/tmp.txt ; e a maior parte do código está fazendo isso. No entanto, quando eu corro, recebo o seguinte:

$ sudo apt-get -qq -y --force-yes remove cowsay 2>&1 > /tmp/tmp.txt
W: --force-yes is deprecated, use one of the options starting with --allow instead.

Como obtenho avisos para redirecionar para o meu arquivo também?

    
por Christopher 27.05.2016 / 20:41

1 resposta

7

Você tem o comando de redirecionamento de fluxo no lugar errado. Os redirecionamentos são analisados da direita para a esquerda, portanto, primeiro é necessário gravar o > /tmp/tmp.txt e, em seguida, o 2>&1 . Conforme você o escreveu, primeiro redireciona STDOUT para o arquivo e depois redireciona STDERR para STDOUT.

Este é o comando correto:

sudo apt-get -qq -y --force-yes remove cowsay > /tmp/tmp.txt 2>&1

Mas há uma alternativa mais simples! Você não precisa necessariamente redirecionar STDERR para o STDOUT para obter ambos gravados em um arquivo, também há um operador que redireciona diretamente o STDOUT e o STDERR para um arquivo: &>

sudo apt-get -qq -y --force-yes remove cowsay &> /tmp/tmp.txt

Explicação e mais informações:

  • > filename redireciona STDOUT (fluxo 1) para filename
  • 2> filename redireciona STDERR (fluxo 2) para filename
  • &> filename redireciona STDOUT e STDERR para filename

Da mesma forma, se você quiser enviar a saída para um segundo comando:

  • | redireciona STDOUT (stream 1) para o STDIN do segundo comando
  • 2| filename redireciona STDERR (fluxo 2) para o STDIN do segundo comando
  • &| filename redireciona STDOUT e STDERR para o STDIN do segundo comando
por Byte Commander 27.05.2016 / 20:59