2011-09-09 27 views
9

Hay una manera fácil para que Ruby imprima en una línea, luego para la próxima impresión, imprime en la misma línea desde el principio.Impresión múltiple en rubí en la misma línea

Estoy tratando de hacer que se muestre un simple contador de archivos en el stdout mientras se generan los archivos. Parece un número rápidamente actualizado en la misma posición en la pantalla.

Respuesta

16

podría utilizar \ r ..

while(true) do 
    print "\\\r" 
    print "|\r" 
    print "/\r" 
end 

imprimirá el carbón y luego mover el cursor hacia atrás e imprimir sobre ella, haciendo un poco como spinner cosa. De lo contrario, puede ver algo así como maldiciones ... (https://github.com/rkumar/rbcurse para un contenedor de ruby)

0

Si está imprimiendo algo parecido a un terminal, puede usar caracteres de control o maldiciones. Sin embargo, si sabe cuántos elementos está procesando, podría ser más fácil hacer una barra de progreso de texto, como wget/etc.

6

Usted puede intentar algo como esto:

print "Hello" 
print 13.chr 
print "123" 

Si la consola es compatible con línea de alimentación debe entonces reemplazar los primeros caracteres de impresión y "123lo". Un ejemplo de un contador puede tener un aspecto como sigue:

100.times{|x| print x; print 13.chr; sleep 0.01} 
+0

Irritantemente, esto funciona localmente en Ubuntu pero no se comporta en SUSE a través de SSH. Por cierto, no es un CR en lugar de un LF – stjohnroe

Cuestiones relacionadas