当我在终端上调整大小时,它会保持全屏显示。我想,有某种方法可以找出终端的屏幕尺寸。如何在 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
程序通过将终端控制序列发送到
ls
将嵌入其输出中的 ANSI 控制序列和(和其他程序)的行为vi
取决于程序的设计。他们可能会使用该函数检测到其输出重定向到文件isatty
,并根据输出是到终端还是到文件执行不同的操作。