Terminal e Grepping Stderr: como executo um código detalhado e recebo o erro padrão sem alterar mais nada?

Terminal e Grepping Stderr: como executo um código detalhado e recebo o erro padrão sem alterar mais nada?

Suponha que eu tenha um código e ele esteja sendo executado em um modo muito detalhado. Essa verbosidade máxima expõe uma mensagem que eu gostaria de ler para ver como está tudo. No entanto, o terminal está inundado com outros conteúdos.

Existe uma maneira de filtrar grep a saída stderror sem fazer a transição do pipeline stderror para o pipeline stdout?

por exemplo,

my-command 2>&1 | grep something # ok, great; is it possible without the pipe shift?

Isso é possível?

i.e., maybe
my-command 2>(grep something)?

Responder1

Estou colocando essas duas opções como respostas, mesmo que elas realmente não respondam à pergunta (a resposta é “no bash, não”), caso alguém veja isso e para mostrar o método de troca de stdout e stderr e para ter a formatação correta (ao contrário dos comentários).

Resposta um: suponha que este seja um programa que você deseja executar (sei que não se parece com um comando, mas finja que é; substituatodosdisso com o comando e os argumentos que você realmente deseja executar):

{ echo stdout; echo stderr >&2; }

Agora, suponha que você queira usar apenas stderr para alguma coisa, mas mantenha o stdout como está.

{ echo stdout; echo stderr >&2; } 2> >(grep something)

Se isso fortodosse você fizesse isso, obteria todo o stdout e partes do stderr que contêm algo, todos intercalados. Você pode querer escrever stdout e stderr em arquivos separados para visualização posterior:

{ echo stdout; echo stderr >&2; } 2> >(grep something > errorfile) > outputfile

Para trocar stdout e stderr (e por que você deseja fazer isso), consultehttps://stackoverflow.com/questions/13299317/io-redirection-swapping-stdout-and-stderrpara uma explicação melhor do que posso dar.

informação relacionada