如何确保我的Ruby命令行程序将清除屏幕,而不管它是在Windows,MacOSX还是基于Linux的发行版上?跨平台Ruby方法来清除终端屏幕
如果我在Windows上,命令是这样的:
system('cls')
而在Linux在Mac上这将是这样的:
system('clear')
如何确保我的Ruby命令行程序将清除屏幕,而不管它是在Windows,MacOSX还是基于Linux的发行版上?跨平台Ruby方法来清除终端屏幕
如果我在Windows上,命令是这样的:
system('cls')
而在Linux在Mac上这将是这样的:
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
这是值得牢记结算程序中的屏幕可能是你想要的行为,但是如果不是对习惯于更多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
块中,以避免在程序崩溃时造成事故。
在哪个系统上“清除”杀死回滚历史记录? –
取决于您的终端设置。在某些情况下,它只是在整个页面中强制空白行。无论如何,调用'clear'只是粗鲁无礼。如果我想让我的屏幕清除,我会按下清除它的快捷键,如“CTRL + L”。 – tadman