stdout, stderr e log usando o comando script

1

Eu tenho remove.sh , que contém:

rm -v test.tmp

E eu tenho install.sh , que contém:

script remove.log -c './remove.sh'

O que posso fazer para que test.tmp exista ou não, não vejo nenhuma mensagem rm relacionada na tela, mas vejo removed 'test.tmp' ou rm: cannot remove 'test.tmp': No such file or directory in remove.log que o comando de script produz?

    
por Codrguy 18.02.2012 / 00:02

2 respostas

2

Se a sua pergunta for "como eu suprimo a saída stderr de um comando", a resposta será algo como:

command 2> /dev/null

Isso redirecionará o stderr (também conhecido como descritor de arquivo 2) para /dev/null , que simplesmente descarta tudo o que recebe.

No entanto, o comando rm suporta o -f flag, o que impedirá que ele produza uma mensagem de erro se o arquivo não existir:

$ rm file_that_does_not_exist
rm: file_that_does_not_exist: No such file or directory
$ rm -f file_that_does_not_exist
$
    
por 18.02.2012 / 00:12
1

script é um exagero para isso. Sim, funciona, mas não é para isso que o script foi feito. Script é usado para aplicações que acessam o TTY diretamente, e não usa STDOUT / STDERR.

Você pode realizar isso facilmente com o redirecionamento básico de shell.

./remove.sh &> remove.log
    
por 18.02.2012 / 18:10