`Docker registra foo | less` no se puede buscar ni desplazar, pero `docker logs foo 2> & 1 | menos` es


10

El uso de cualquiera de ellos da texto legible. Pero solo con la redirección stderr se puede desplazar o escribir / somepattern y obtener coincidencias.

Sin ella, la búsqueda proporciona "Nada que buscar (presione RETORNO)" y una columna de ~ 's.

Dado, stderr y stdout no son lo mismo, pero ¿por qué menos les muestra lo mismo hasta que empiezo a hacer algo en menos?

Esto tal vez sea algo extraño de vim de múltiples ventanas que simplemente no entiendo. Pensamientos?

Respuestas:


7
+--------------------+        +------+       +----------+
|             stdout |·······→| less |——————→|          |
| somecommand        |        +------+       | terminal |
|             stderr |——————————————————————→|          |
+--------------------+                       +----------+

Si somecommandimprime texto solo con error estándar, cuando lo ejecuta somecommand | less, somecommandy lessambos se muestran en el terminal. La salida del comando en su stderr no va less, va directamente a la terminal, ya que no se redirige. Primero, la salida de los somecommandpergaminos por menos se inicializa y muestra su línea de solicitud; luego, cuando somecommandtermina, menos avisos de que su entrada está completa (porque la tubería está cerrada). Es posible que desee experimentar un poco: ejecutar

{ sleep 1; somecommand; sleep 1; } | { sleep 0; less; }

y variaciones en los tiempos de espera para que la somecommandproducción produzca antes o después de que menos esté lista y para ver qué sucede cuando se cierra la tubería.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.