2011-09-09 20 views
9

Esiste un modo semplice per Ruby di stampare in una riga, quindi per la stampa successiva, stampa sulla stessa riga dall'inizio.Ruby multiple print sulla stessa riga

Sto cercando di mostrare un semplice contatore di file sullo stdout durante la generazione dei file. Sembra un numero rapidamente aggiornato nella stessa posizione sullo schermo.

risposta

16

potrebbe utilizzare \ r ..

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

stamperà il char e quindi spostare il cursore avanti e stampare su di essa, facendo un po 'come filatrice cosa. Altrimenti puoi guardare qualcosa come curses .... (https://github.com/rkumar/rbcurse per un wrapper rosso)

0

Se si stampa su un terminale, è possibile utilizzare caratteri di controllo o imprecazioni. Se sai quanti oggetti stai elaborando potrebbe essere più semplice creare una barra di avanzamento testuale, come wget/etc.

6

si può provare qualcosa di simile:

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

Se la console supporta linea di alimentazione dovrebbe quindi sostituire i primi caratteri e stampa "123lo". Un esempio con un contatore potrebbe apparire come segue:

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

Irritatamente, questo funziona localmente su Ubuntu ma non si comporta su SUSE via SSH. BTW - non è un CR piuttosto che un LF – stjohnroe

Problemi correlati