终端下不换行刷新当前行

终端下耗时较长的程序运行过程中输出中间状态时,有时信息太多,希望一些次要的信息能被覆盖掉,整体显得干净一些。

以往我用"\r"字符,控制输出的光标回到行首,再次输出覆盖上一行的信息,只要输出不换行,且下次输出的行长度不短于上一次,看起啦就是最后一行不断地在刷新。

但是如果下一次的输出长度不确定,甚至因接口限制而必须换行时,这种方式就不行了。

玩过BBS的都知道,ANSI定义了一套终端控制转义字符,可以更精细地控制屏幕输出,比如颜色,光标位置等。查阅ANSI转义代码表

CSI n K   EL – Erase in Line,当n==2时,清除当前行。

CSI n F    CPL – Cursor Previous Line,光标上移一行。

CSI为ESC字符,也就是八进制的\033或者\x1E字符,再跟一个左大括号。

所以,如果能够不换行,只需要输出\r\033[2K字符,就能实现清除当前行并光标回到行首。

如果字符串输出时,输出接口会自动加上一个换行的话,那就用CSI F回到上一行即可。

最终,我用这种方式实现了,在Blade中,编译源代码的状态信息自动刷新,削减了3/4的滚屏。

时间: 2024-10-18 12:38:06

终端下不换行刷新当前行的相关文章

关闭Linux终端下的蜂鸣

关闭Linux终端下的蜂鸣 2014年1月12日 15:29 setterm -blength0 来自为知笔记(Wiz)关闭Linux终端下的蜂鸣,码迷,mamicode.com

Mac 终端下Homebrew的几个常用命令(新手笔记)

最近在研究用appium来做IOS的自动化,所以开始接触Mac系统.记录一下在Mac的终端下Homebrew的几个常用命令 安装(需要 Ruby,不过一般自带都有):ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 搜索:brew search XXX   在安装之前可以先查询一下,是否有这个软件 查询:brew info XXX 主要看具体的信息,比如目前的版本,依赖,安装后注意事项

linux下与windows下的换行符

回车符号和换行符号产生背景 关于"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符.要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失.     于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符.一

这些孩子在 Ubuntu 的 Linux 终端下玩耍

关于Linux的学习,请参考书籍<Linux就该这么学> 我发现了一个孩子们在他们的计算机教室里玩得很开心的视频.我不知道他们在哪里,但我猜测是在印度尼西亚或者马来西亚.视频请自行搭梯子: https://youtu.be/z8taQPomp0Y 在Linux终端下面跑火车这里没有魔术.只是一个叫做“sl”的命令行工具.我想它是在把ls打错的情况下为了好玩而开发的.如果你曾经在Linux的命令行下工作,你会知道ls是一个最常使用的一个命令,也许也是一个最经常打错的命令. 如果你想从这个终端下的

linux终端下的英文字典--SDCV(转)

sdcv全称为stardict console version,即终端下的词典.为什么选择这个呢,原因如下:1.stardict GUI做得并不好,老是出故障.2.linux下没有其它好的翻译软件了.3.sdcv使用起来也很方便. 我的系统是ubuntu 8.10,其它linux系统应该也差不多.首先,安装:sudo apt-get install sdcv然后,安装词典数据,之前只安装了不带数据的sdcv.下载地址是:stardict dictionaries           要下载tar

Linux下的换行符\n\r以及txt和word文档的使用

Linux doc WINDOWS下记事本编写的文档和LINUX下VIM或者GEDIT等编写的文档的不同! 例如WINDOWS下编写的SH脚本,放到LINUX下执行可能会出错. 解决方法: 原因是:Windows下换行符号是“\r\n”,而linux下是“\n”没有”\r”,当shell文件是在Windows下编写的时候,所有的换行符都是“\r\n”,shell下是没办法执行这个文件的,会提示以上错误.请在ultraedit下将该文件执行“File->conversions->Dos to U

在linux终端下聊天(会话)

两人同时登录一台linux主机或同时打开两个会话窗口,如下: [[email protected] ~]# w 02:00:59 up 64 days,  7:15,  3 users,  load average: 0.00, 0.00, 0.00 USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT root     pts/0    192.168.204.98   00:27   3

Linux终端下简单的登录程序 密码不回显

在Linux进行登录是输入密码不会被回显,所以我也写了个简单的登入程序,使得在输入密码时不再进行回显. #include <stdio.h> #include <stdlib.h> #include <termios.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <stdbool.h> #define USER_NAME &qu

[Eclipse]已经写好的代码怎样切换为unix下的换行符?

切换换行符的显示格式, 一般的设置是这样的: 但是这样只能对新文件起作用,原来已经写好的还是那熊样.(怎么办呢,得吃后悔药啊,谁让你开始没准备好呢?!T_T) 下面就是后悔药: 这样就OK了. 附:有图有真相 转换前: 转换后: [Eclipse]已经写好的代码怎样切换为unix下的换行符?,布布扣,bubuko.com