Windows、MacOSX、またはLinuxベースのディストリビューションに関係なく、Rubyのコマンドラインプログラムが画面をクリアする方法を教えてください。ターミナル画面をクリアするクロスプラットフォームRubyメソッド
私はWindows上だ場合、コマンドはこれです:
system('clear')
Windows、MacOSX、またはLinuxベースのディストリビューションに関係なく、Rubyのコマンドラインプログラムが画面をクリアする方法を教えてください。ターミナル画面をクリアするクロスプラットフォームRubyメソッド
私はWindows上だ場合、コマンドはこれです:
system('clear')
def clear_screen
puts "Going to clear the screen"
if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i
system('cls')
else
system('clear')
end
end
それはクリアしていることを念頭に置いて価値がある:それはこのことだろうLinux上でMacのに対し
system('cls')
プログラム内の画面があなたの望む動作かもしれませんが、よりUNIX風の環境に慣れた人にとっては怒らない限り、刺激的なものかもしれません。スクロールバック履歴を消すことは本当に失礼です。
RubyとPOSIXのこれ以上の処理方法は、スクリーンを使用して端末スタイルの対話型アプリケーションを構築するのに最適な、クロスプラットフォームのライブラリであるCurses(Documentation)です。 。あなたはこのようなもので終わる
:
#!/usr/bin/env ruby
require 'rubygems'
gem 'curses'
require 'curses'
Curses.init_screen
begin
Curses.crmode
# Do your calculations here, and to print:
Curses.addstr("(program output)\n")
Curses.addstr("Press any key to continue...")
Curses.refresh
Curses.getch
ensure
Curses.close_screen
end
呪いは「クリアスクリーン」ツールよりも多くあり、あなたは、スクロールで物事のすべての種類を複数のウィンドウを追加したり、終了したときプログラムは、close_screen
が呼び出されたときに、以前とまったく同じ状態に端末を復元します。そのため、プログラムがクラッシュした場合には、問題が発生するのを避けるため、ブロックはensure
にあります。
どのシステムでスクロールバック履歴を消去するのですか? –
端末の設定によって異なります。いくつかの点では、ページ全体に空白行が必要です。いずれにしても、「クリア」と呼ぶことはただの失礼です。私の画面をクリアしたい場合は、 'CTRL + L 'のようにクリアするショートカットを押します。 – tadman