io.write("\27[2J")
来源:互联网 发布:vb和微信公众号对接 编辑:程序博客网 时间:2024/06/06 02:54
Programming in Lua 第六章 More About Function 开头有一个例子。它在终端屏幕上输出一个用*号组成的正弦曲线:
--清空屏幕function eraseTerminal()io.write("\27[2J")end--在指定位置画*function mark(x,y)local str=string.format("\27[%d;%dH*", y, x)io.write(str)endTermSize = {w = 80,h = 24}--绘制曲线function plot(f)eraseTerminal()for i=1,TermSize.w dolocal x = (i/TermSize.w)*2-1local y = (f(x)+1)/2*TermSize.h--将获取的y值取整数部分mark(i, math.ceil(y))endio.read()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
- io.write("\27[2J")
- Lua> io.write(“\27[2J”)
- IO read and write. demo
- j-link修复 write flash 一直无法点击
- make与makefile IO read write
- io.write()和print()函数的区别
- 5-文件IO-read/write/open
- IO流_FileOutputStream的三个write()方法
- 关于java io 的 write 与 操作系统
- read、write系统调用与IO库函数
- IO流:Reader/Write字符流
- java.io.InputStream.read和java.io.OutputStream.write
- LUA io.input,io.output,io.write,io.read之间的关系
- OJ 2J
- J
- j
- j
- J#
- Android中ListView的Selector的用法
- 安卓开发环境的搭建
- Unity destructor Or OnDestory
- 通过网页去实现远程控制软件的上线!博客,贴吧,云盘等等网页方式实现上线原理解析,绕过域名拦截
- 2015-04-30 smali/baksmali v2.0.6
- io.write("\27[2J")
- spring方法内部调用方法事务关系
- hibernate 4 object is not an instance of declaring class
- CopyOnWriteArrayList 源码阅读与分析
- POJ 3278 Catch That Cow
- MFC UDP CSocket实现局域网通信
- C++找数组中只出现一次的两个数并保存(牛客剑指offer)
- CKEditor实现图片上传
- 组合博弈 -- 三大基本博弈