Como obter o número do descritor de arquivo de uma saída e como redirecionar todos eles de uma só vez

1

Vamos pegar este comando por exemplo

$ time ssh ec2 ls
www apps
real    0m0.554s
user    0m0.004s
sys     0m0.000s

$ time ssh ec2 ls 1>/dev/null
real    0m0.554s
user    0m0.004s
sys     0m0.000s

$ time ssh ec2 ls 2>/dev/null
www apps
real    0m0.554s
user    0m0.004s
sys     0m0.000s

Claramente, ls output vem de fd 1 . E quanto a time output. Qual descritor de arquivo ele usa? Como posso encontrá-lo?

Além disso, em vez de redirecioná-los individualmente, como posso redirecionar todos eles de uma só vez, ou seja, all>/dev/null . Eu não estou procurando por 1>/dev/null 2>&1...

    
por VarunAgw 08.02.2016 / 13:26

1 resposta

1

time escreve para stderr.

O motivo pelo qual parece não é que você está escrevendo o stderr do comando atual para /dev/null , não a saída de tempo. Isso ocorre porque time é uma palavra-chave que é analisada de maneira diferente dos utilitários regulares: o redirecionamento é parte do comando cronometrado.

O uso de um bloco de código redireciona toda a saída.

{ time ls; } 2> /dev/null

Note que você ainda pode redirecionar a saída de ls para outro lugar dentro do bloco, se quiser, e isso será cronometrado.

Para redirecionar tudo o que você pode fazer

{ time ls 1>&2; } 2> /dev/null
    
por 08.02.2016 / 14:43