2011-09-09 17 views
9

Czy Ruby jest łatwa do wydrukowania w jednej linii, a następnie do następnego wydruku, drukuje do tej samej linii od początku.Wielokrotne drukowanie w Ruby na tej samej linii

Próbuję zrobić prosty licznik plików pokazany na stdout podczas generowania plików. Wygląda to na szybko aktualizowaną liczbę w tej samej pozycji na ekranie.

Odpowiedz

16

przydałby \ r ..

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

wydrukuje char, a następnie przesunąć kursor z powrotem i wydrukować na nim, co trochę jak spinner rzecz. W przeciwnym razie możesz spojrzeć na coś w stylu przekleństwa .... (https://github.com/rkumar/rbcurse na ruby ​​wrapper)

0

Jeśli drukujesz do terminala, możesz użyć znaków kontrolnych lub przekleństw. Jeśli wiesz, ile elementów przetwarzasz, łatwiej jest po prostu utworzyć tekstowy pasek postępu, np. Wget/etc.

6

Można spróbować czegoś takiego:

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

Jeśli konsola obsługuje linię zasilającą należy wtedy wymienić pierwsze znaki i drukuj „123lo”. Przykładem z licznikiem może wyglądać następująco:

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

Działa to lokalnie na systemie Ubuntu, ale nie działa w systemie SUSE przez SSH. BTW - nie jest CR, a nie LF – stjohnroe

Powiązane problemy