sudo
tem problemas porque executa a parte do comando. Após o redirecionamento, sudo
não é mais efetivo.
Você pode fazer isso em vez disso:
sudo bash -c "Your commands here > output_file"
Escolhendo cuidadosamente as aspas simples ou duplas nos comandos entre aspas, na ordem de aninhamento que você usa.
EDITAR:
Explicação em detalhes um pouco mais detalhados
Quando você executa um script, você está criando um novo sub-shell e seu script é executado neste sub-shell, mas a saída retorna ao shell atual. Seu novo sub-shell no qual você executa esse script é executado com sudo
privileges, portanto, os scripts são executados efetivamente como root. Mas quando a corrida termina, o shell sai e seu sudo
vai * pooof *. A saída retorna ao seu shell atual sem privilégios. Se você espera que ele seja escrito em um local privilegiado, isso não acontecerá. Portanto, executar o novo shell e toda a enchilada, dentro de um shell bash
bem definido, torna isso possível. Porque, neste momento, seu comando e saída são todos manipulados pelo shell sudo
ativado, não na metade do que no caso original.