Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写全屏Linux控制台应用程序/脚本?_Linux_Shell_Command Line Interface - Fatal编程技术网

如何编写全屏Linux控制台应用程序/脚本?

如何编写全屏Linux控制台应用程序/脚本?,linux,shell,command-line-interface,Linux,Shell,Command Line Interface,我甚至很难用谷歌搜索这个,因为我不知道正确的关键词。一些命令行应用程序(如vi和less)占据了整个控制台屏幕,并向用户提供了一个交互式界面。退出此类应用程序后,屏幕将返回到应用程序启动前的状态。我想写一个以这种方式运行的程序,但我也不知道它叫什么,所以我找不到任何关于它是如何实现的文档 因此,我的问题有三个: 我可以使用什么关键字来查找此文档 如果您愿意,链接到这些文档会很有帮助 最后,我可以用Ruby甚至bash这样的脚本语言来实现这一点吗?我对C没有问题,但是我工作的环境更适合解释语言 您

我甚至很难用谷歌搜索这个,因为我不知道正确的关键词。一些命令行应用程序(如vi和less)占据了整个控制台屏幕,并向用户提供了一个交互式界面。退出此类应用程序后,屏幕将返回到应用程序启动前的状态。我想写一个以这种方式运行的程序,但我也不知道它叫什么,所以我找不到任何关于它是如何实现的文档

因此,我的问题有三个:

  • 我可以使用什么关键字来查找此文档
  • 如果您愿意,链接到这些文档会很有帮助
  • 最后,我可以用Ruby甚至bash这样的脚本语言来实现这一点吗?我对C没有问题,但是我工作的环境更适合解释语言

  • 您正在描述的功能是。我认为诅咒在默认情况下会启用此功能。Ruby、Python和其他脚本语言当然有诅咒绑定。

    正如一些评论中所说,您正在寻找ncurse。Linux文档项目提供了一个非常好的C版ncurses上的HOWTO,这是我自己开始的


    您甚至可以使用tput程序访问bash中的ncurses。整个ncurses库(就像之前的诅咒一样)通过向终端发送转义序列来工作。xterm程序模拟vt100终端(以及Tektronic终端),有各种字符组合,可以移动光标、清除屏幕、绘制各种字符等。这些字符通常以转义字符开始,因此命名为:转义序列。有时您还会在people的PS1外壳变量中看到这些转义序列,并使用\e提供转义字符;通常用于给提示上色或设置窗口标题

    tput引用terminfo数据库,以确定执行您要求它执行的功能的转义序列

    请参阅手册页,键入:

    man 5 terminfo
    

    有关详细信息

    您要查找的库是“curses”。我确定有到Perl的绑定,但不确定其他脚本语言。接受链接到tldp。伟大的网站!完整性:此功能通常很烦人,有多种方法可以阻止程序使用备用屏幕缓冲区: