Lua io.write(“\27[2J”)

2024-09-01 07:32
文章标签 lua io 27 write 2j

本文主要是介绍Lua io.write(“\27[2J”),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


Programming in Lua 第六章 More About Function 开头有一个例子。它在终端屏幕上输出一个用*号组成的正弦曲线:

function eraseTerminal()io.write("\27[2J")
end
-- writes an `*' at column `x' , row `y'
function mark (x,y)io.write(string.format("\27[%d;%dH*", y, x))
end
-- Terminal size
TermSize = {w = 80, h = 24}-- plot a function
-- (assume that domain and image are in the range [-1,1])
function plot (f)eraseTerminal()for i=1,TermSize.w dolocal x = (i/TermSize.w)*2 - 1local y = (f(x) + 1)/2 * TermSize.hmark(i, y)endio.read() -- wait before spoiling the screen
endplot(function (x) return math.sin(x*2*math.pi) end)

这段看似没什么稀奇的 example code 里第二行的 “\27[2J” 和第七行的 “\27[%d;%dH” 吸引了我。

我在 Lua 解释器的交互模式下,动手试了一下 :

io.write("\27[2J")

屏幕被清空了,就好像在终端里执行了 clear 一样!而根据注释说明:

io.write(string.format("\27[%d;%dH*", y, x))

这段代码的用途就是在屏幕的第y行,第x列打印一个*号。

这个神奇的 \27 打头的字符串是什么东西呢?\27 在 ascii 码表示的是 <ESC> ,但这和终端又有什么关系?

经过一番搜索,在 google 的帮助下终于找到源头:Terminal codes – http://wiki.bash-hackers.org/scripting/terminalcodes

Terminal (control-)codes are needed to give specific commands to your terminal. This can be related to switching colors or positioning the cursor, simply everything that can’t be done by the application itself.

这是一种用来控制终端界面的指令,可以改变光标所在的位置和颜色——那些CLI程序无法完成的事情。

在另一份代码中,我找一了一个封装好的终端控制代码。更直观了说明了 Terminal codes 的作用:
https://bitbucket.org/lmb/diluculum/src/44c52aec561b/Lua/ANSITerminal.lua

这篇关于Lua io.write(“\27[2J”)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126313

相关文章

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

springboot体会BIO(阻塞式IO)

使用springboot体会阻塞式IO 大致的思路为: 创建一个socket服务端,监听socket通道,并打印出socket通道中的内容。 创建两个socket客户端,向socket服务端写入消息。 1.创建服务端 public class RedisServer {public static void main(String[] args) throws IOException {

Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别

在 Redis 中,Lua 脚本具有原子性是因为 Redis 保证在执行脚本时,脚本中的所有操作都会被当作一个不可分割的整体。具体来说,Redis 使用单线程的执行模型来处理命令,因此当 Lua 脚本在 Redis 中执行时,不会有其他命令打断脚本的执行过程。脚本中的所有操作都将连续执行,直到脚本执行完成后,Redis 才会继续处理其他客户端的请求。 Lua 脚本在 Redis 中原子性的原因

由Lua 粘合的Nginx生态环境

转自:http://blog-zq-org.qiniucdn.com/pyblosxom/oss/openresty-intro-2012-03-06-01-13.html -- agentzh tech-club.org 演讲听录 免责聲明 Lua 粘合的 Nginx 生态环境 2.1. openresty 2.2. 配置小语言 2.3. ngx_drizzle 2.4.

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

android java.io.IOException: open failed: ENOENT (No such file or directory)-api23+权限受权

问题描述 在安卓上,清单明明已经受权了读写文件权限,但偏偏就是创建不了目录和文件 调用mkdirs()总是返回false. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_E

JavaEE-文件操作与IO

目录 1,两种路径 二,两种文件 三,文件的操作/File类: 1)文件系统操作 File类 2)文件内容操作(读文件,写文件) (1)打开文件 (2)关闭文件 (3)读文件/InputStream (4)写文件/OutputStream (5)读文件/reader (6)写文件/writer (7)Scanner 四,练习: 1,两种路径 1)绝对路径

Unstructured cannot write mode RGBA as JPEG 错误解决

Unstructured cannot write mode RGBA as JPEG 错误解决 0. 错误详细1. 解决方法 0. 错误详细 Image Extraction Error: Skipping the failed imageTraceback (most recent call last):File "/root/miniconda3/envs/learn-y