2010-07-03 5 views
34

Je voudrais savoir comment faire pour Ruby ce que je peux faire avec system("clear") en C. j'ai écrit un programme commeComment effacer le terminal dans Ruby?

puts "amit" 
system("clear") 

Je veux que la console soit effacée après l'exécution de cette commnad, mais il est ne fonctionne pas.

+1

Quel système d'exploitation utilisez-vous Ruby on? – Zabba

+0

SCiTE n'est pas un compilateur, c'est juste un éditeur de texte. –

Répondre

2

Vous pouvez utiliser suivant créer un fichier ruby ​​dire check.rb comme follwing

puts "amit" 
#system "clear" 

et l'exécuter à partir de la console [Salil @ localhost bureau] $ check.rb

o/p

[[email protected] Desktop]$ ruby check.rb 
amit 
[[email protected] Desktop]$ 

maintenant modifier check.rb et l'exécuter à partir de la console

puts "amit" 
system "clear" 

o/p

[[email protected] Desktop]$ 
6

Une légère variation fonctionne:

puts "Here's a very long string" 
sleep 1 
system ("cls") 

Mark.

+4

Évidemment ne fonctionne que sur Windows. –

+0

système "clear" est ce que vous voulez pour ceux sur un terminal * nix –

1

Si vous êtes sur un Mac, vous pouvez effacer votre fenêtre de terminal avec "Commande + K".

13

Essayez l'un de ces deux dans votre fichier ruby:

puts `clear` 

ou

puts "\e[H\e[2J" 
+3

Veuillez utiliser le second ici. L'idée de forger un processus juste pour effacer l'écran me fait mal à la tête. Voir ici pour plus d'informations: http://www.termsys.demon.co.uk/vtansi.htm Aussi, consultez ncurses pour un contrôle plus robuste. Mais la chance que vous trouverez un terminal non-ansi ces jours-ci est à peu près nulle. –

13

Edit:. (Relisant votre question, je sais que ce n'est pas ce que vous êtes après que je pensais que vous étiez je vais laisser ceci ici et ne pas le supprimer car je pense qu'il peut être très utile)


Finalement, cela dépend du système sur lequel vous êtes.

ctrl + l (< - c'est un minuscule L) effacera le terminal ( cmd + K sur un mac je crois)

cela fonctionne aussi dans la régulière terminal, ou l'interprateur python, ou mysql, etc

il y a une bonne quantité d'autres raccourcis avec lesquels vous aimeriez vous familiariser.je l'ai trouvé this après une recherche rapide Google:

CTRL-l - Clears the screen and places the command prompt at the top of the page. 
CTRL-r - Starts a search against the command history. Start by typing in what you want to search by then press CTRL-r to see the matches. 
CTRL-c - Kills the current running foreground program. 
CTRL-z - Stop/sleep the current running foreground program. 
CTRL-s - Stops the output to the screen. 
CTRL-q - Allows output to the screen. 
CTRL-a - Moves the cursor the start of the line 
CTRL-e - Moves the cursor to the end of the line 
CTRL-f - Moves the cursor 1 character forward 
CTRL-b - Moves the cursor 1 character backward 

ne sont pas mentionnés sur cette liste est que

Alt-F moves the curosor one word forward 
Alt- B moves the cursor one word back 
47

Si vous voulez quelque chose qui est vaguement vous pouvez essayer Portable:

system "clear" or system "cls" 

qui va essayer à la fois clear et cls

0

Une approche portable, compromized mais souvent visuellement satisfaisant que je l'utilise est ce que j'appelle « fou Putz met »:

counter=0 
until counter == 50 
puts " " 
counter += 1 
end 
+3

Cela dépend de la taille de la mémoire tampon de l'utilisateur et est loin d'être efficace, mais de toute façon, vous pouvez aussi faire 50.times {puts ""} pour faire court – Riptyde4

+3

'print" \ n "* 50' –

13

Voici une façon multi-plateformes pour le faire:

Gem.win_platform? ? (system "cls") : (system "clear") 
3

Si vous utilisez Mac OS puis utilisez:

system('clear') 
1

Pour les utilisateurs de Windows:

Il suffit de taper cette fonction ci-dessous dans votre fenêtre et vous êtes irb bien aller:

Définir cette fonction:

def cls 
    system('cls') 
end 

Après avoir défini l'appel de cette fonction en cas de besoin.

3

Ceci devrait couvrir les terminaux Windows et OSX/Linux.

def method_name 
    puts "amit" 
    if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i 
     system('cls') 
    else 
     system('clear') 
    end 
end 
method_name 
0

Travaux sur UNIX:

system("clear") 
Questions connexes