加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – VT100 ANSI转义序列:获取屏幕大小,条件ANSI

发布时间:2020-12-14 01:12:42 所属栏目:Linux 来源:网络整理
导读:当我在终端上调整大小时,它会全屏显示. 我猜,有些东西可以找出终端的屏幕尺寸.我怎么能在VT100中做到这一点? 当我列出文件夹时,它显示蓝色文件夹. (或者说不同的颜色)但是,如果将输出保存到文本文件(ls out.txt),则不会看到任何ANSI代码而是纯文本.但是,如
>当我在终端上调整大小时,它会全屏显示.
我猜,有些东西可以找出终端的屏幕尺寸.我怎么能在VT100中做到这一点?
>当我列出文件夹时,它显示蓝色文件夹. (或者说不同的颜色)但是,如果将输出保存到文本文件(ls> out.txt),则不会看到任何ANSI代码而是纯文本.但是,如果您尝试(vi> out.txt),您将看到ANSI代码.怎么知道的?

谢谢

解决方法

自动调整到屏幕大小调整的程序(例如vi)响应SIGWINCH信号,并使用系统调用获取系统有关屏幕大小的信息.例如,参见 Get width/height of a terminal window in c++?.顺便说一下,虽然广泛实施,但似乎没有在POSIX signal.h中记录.

如果不考虑SIGWINCH,程序可以向终端询问其屏幕大小. resize程序通过发送终端控制序列来完成此操作

>将光标移动到右下角(实际上,移动到行/列999/999,这已经足够了),和
>询问终端光标到底在哪里.

关于ANSI控制序列的ls和vi(以及其他程序)的行为将嵌入其输出中取决于程序的设计.他们可能会使用isatty函数检测其输出重定向到文件,并根据输出是终端还是文件来执行不同的操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读