stderr para / dev / tty12 para sempre

0

Eu quero redirecionar persistentemente stderr para / dev / tty12, para que as mensagens de erro não toquem nos meus nervos ao fazer algo em tty1.

O redirecionamento deve passar pelo init.d ou ~ / .bashrc ou ~. / bash_profile. Apenas uma vez.

Pode ser feito e como?

    
por frank 12.06.2012 / 00:09

2 respostas

0

Parece uma péssima ideia, e eu duvido que o sistema forneça uma maneira de fazer isso.

Sempre que um processo é criado, o processo de chamada determina onde seu stdin, stdout e stderr serão direcionados. Teria que haver uma maneira geral de substituir isso - e isso quebraria qualquer mecanismo que redirecionasse o stderr explicitamente.

Por exemplo, se você digitar:

some_command >some_command.out 2>some_command.err

o stderr de some_command deve ir para some_command.err ou para /dev/tty12 ?

A coisa mais próxima que consigo pensar é invocar um shell com seu stderr redirecionado:

bash -l 2>/dev/tty12

Em minhas (breves) experiências (redirecionando para um arquivo em vez de para um tty), isso faz com que o shell não seja interativo. Adicionar -i força-o a ser interativo - mas o prompt do shell aparentemente é impresso em stderr.

É claro que você pode redirecionar o stderr para comandos individuais (supondo que você não esteja usando csh ou tcsh ):

some_command 2>some_command.err

e você pode definir uma função de shell que faz isso para você:

e() { "$@" 2>/dev/tty12 ; }

Em seguida, para cada comando cujo stderr você deseja redirecionar, basta prefixar e no comando:

e some_command
    
por 12.06.2012 / 00:21
0

Muitos shells escrevem seus prompts interativos para stderr, então é provável que você tenha problemas para interagir com um shell se você redirecionar seu stderr para /dev/tty12 . Além disso, as mensagens de erro são importantes. Por que ignorá-los?

    
por 12.06.2012 / 01:11

Tags