7

我正在编写一个脚本,它将在终端仿真器窗口中将股票图表显示为 ASCII 艺术。我通常使用 OSX/Terminal.app,但基于 Linux 的解决方案将是一个可接受的替代方案。

我的脚本目前有用于屏幕宽度和高度的命令行参数(同样,以字符而不是像素为单位),默认值由我自己发明的环境变量确定。我希望这些脚本确定当前窗口的大小(以字符为单位),并将其用作默认值。在我的 17 英寸 Macbook Pro 上,大窗口的典型尺寸可能是 200 x 68。

这是一个 perl 脚本,但如果你知道其他语言的解决方案,请告诉!

TIA。

4

3 回答 3

8

执行此操作的通常方法是tput linesand tput cols; 这个查询,按顺序:

  • $LINES$COLUMNS环境变量;
  • termios设置,由终端模拟器在您调整其窗口大小时设置;
  • terminfo标识的描述$TERM
于 2011-04-22T19:55:43.923 回答
2

在 C 中,您可以使用该TIOCGWINSZ选项ioctl/dev/tty.

这是由Term::ReadKey模块公开的 - from man perlfaq8

如何获取屏幕尺寸?

如果您Term::ReadKey从 CPAN 安装了模块,则可以使用它来获取字符和像素的宽度和高度:

use Term::ReadKey;
($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
于 2011-04-22T19:58:04.877 回答
1

当以交互方式运行时,bash 定义$LINES$COLUMNS. 否则,使用 curses/ncurses 检索终端尺寸。

于 2011-04-22T19:54:34.570 回答