Terminal y Grepping Stderr: ¿cómo ejecuto un código detallado y obtengo el error estándar sin cambiar nada más?

Terminal y Grepping Stderr: ¿cómo ejecuto un código detallado y obtengo el error estándar sin cambiar nada más?

Supongamos que tengo un código y se está ejecutando en un modo muy detallado. Esta máxima detalle expone un mensaje que me gustaría leer para ver cómo va todo. Sin embargo, el terminal se inunda de otros contenidos.

¿Hay alguna manera de filtrar grep la salida de stderror sin realizar la transición de la canalización de stderror a la canalización de stdout?

Por ejemplo,

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

es posible?

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

Respuesta1

Estoy poniendo estas dos opciones como respuestas, aunque en realidad no responden la pregunta (la respuesta es "en bash, no") en caso de que alguien más vea esto y para mostrar el método de intercambio stdout y stderr. y tener el formato correcto (a diferencia de los comentarios).

Respuesta uno: supongamos que este es un programa que desea ejecutar (sé que no parece un comando, pero pretendo que lo es; reemplacetodode esto con el comando y los argumentos que realmente desea ejecutar):

{ echo stdout; echo stderr >&2; }

Ahora supongamos que desea buscar solo stderr para algo, pero mantener stdout como está.

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

si eso estodoSi lo hicieras, obtendrías todo stdout y partes de stderr que contienen algo, todo intercalado. Es posible que desee escribir stdout y stderr en archivos separados para verlos más tarde:

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

Para intercambiar stdout y stderr (y por qué querrías hacerlo), consultahttps://stackoverflow.com/questions/13299317/io-redirection-swapping-stdout-and-stderrpara una mejor explicación de la que puedo dar.

información relacionada