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) parafilename
-
2> filename
redireciona STDERR (fluxo 2) parafilename
-
&> filename
redireciona STDOUT e STDERR parafilename
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