Não é possível redirecionar a saída para o arquivo de certos comandos

0

Estou tentando gravar a saída (erro ou sucesso) em um arquivo. Com outros comandos, posso fazer isso sem problemas, mas os comandos abaixo só gravam no terminal, mas não em um arquivo. Se eu correr diretamente no terminal, posso ver a saída na tela e o arquivo será criado, mas estará vazio.

Os comandos são

sudo ip r add default via 192.168.1.254 > outfile.txt >&1
sudo ip r add default via 192.168.1.254 | tee -a outfile.txt
sudo /sbin/route add default gw 192.168.1.254 | sudo tee -a outfile.txt

Eles estão em um script de inicialização (instalação sem cabeçalho). Eu não sou capaz de simular as condições de inicialização de dentro do terminal diretamente, então apenas executá-las diretamente não necessariamente me dá a saída que acontece em condições de inicialização, o que significa que não consigo descobrir por que / o que está causando falhas.

A saída quando eu corro diretamente no terminal é RTNETLINK answers: Network is unreachable para sudo ip r add default via 192.168.1.254 e SIOCADDRT: Network is unreachable para sudo route add default gw 192.168.1.254 que é esperado nessas condições

    
por Josh 25.09.2018 / 11:45

1 resposta

0

Para o bash

ip r add default via 192.168.1.254 &> outfile.txt

ou o formulário padrão para outras camadas:

ip r add default via 192.168.1.254 >outfile.txt 2>&1

de man bash :

   Redirecting Standard Output and Standard Error
       This  construct allows both the standard output (file descriptor 1) and
       the standard error output (file descriptor 2) to be redirected  to  the
       file whose name is the expansion of word.

       There  are two formats for redirecting standard output and standard er‐
       ror:

              &>word
       and
              >&word

       Of the two forms, the first is preferred.  This is semantically equiva‐
       lent to

              >word 2>&1
    
por 25.09.2018 / 11:49