用于清除终端屏幕的跨平台Ruby方法

时间:2017-05-02 06:11:56

标签: ruby linux windows macos clear

如何确保我在Ruby中的命令行程序清除屏幕,无论它是在Windows,MacOSX还是基于Linux的发行版上?

如果我在Windows上,则命令为:

urldecode()

而在Mac上的Linux上,它将是:

system('cls')

2 个答案:

答案 0 :(得分:1)

system('clear')

答案 1 :(得分:0)

值得记住的是,清除程序中的屏幕可能是您期望的行为,但如果对于习惯于更加UNIX风格的环境的人来说并不是彻头彻尾的激怒,那么这可能会令人恼火:杀死他们的回滚历史非常粗鲁。

更多Ruby和POSIX处理方式是通过CursesDocumentation),这是一个跨平台的库,可让您对如何使用屏幕进行打印进行大量控制,非常棒用于构建终端式交互式应用程序。

你最终得到这样的东西:

#!/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块中的原因,以避免在程序崩溃时搞砸了。