Sim, mas não é muito bonito.
Você pode fazer exec 2> error.log
para enviar stderr
para um arquivo
O problema é que agora você precisa limpá-lo e restaurar stderr
, portanto, na parte inferior da função, você precisa fazer exec 2>&1
, o que faz com que stderr
volte ao terminal novamente.
function XX()
{
exec 2> error.log
foo bar
exec 2>&1
}
O exec 2>&1
não faz mal deixar, então você pode apenas comentar e descomentar o primeiro exec
.
Como alternativa, você pode fazer com que toda a função seja executada em um subshell para que os redirecionamentos sejam limpos automaticamente (os parênteses no exemplo abaixo iniciam um subshell).
function XX()
{ (
exec 2> error.log
foo bar
) }
Por fim, você pode criar uma definição de alias que possa comentar e descomentar facilmente e apenas colocá-la logo antes da declaração da função.
alias XX='XX 2> error.log'
function XX()
{
foo bar
}