我正在编写一个脚本,它将在终端仿真器窗口中显示一个股票图表作为ASCII艺术品。我通常使用OSX / Terminal.app,但基于Linux的解决方案是可接受的替代方案。
我的脚本目前有屏幕宽度和高度的命令行参数(同样,在CHARACTERS中测量,而不是像素),默认值由我自己发明的环境变量决定。我希望这些脚本确定当前窗口的大小(IN CHARACTERS),并使用THAT作为默认值。我的17英寸Macbook Pro上的大窗口的典型尺寸可能是200 x 68。
这是一个perl脚本,但如果你知道其他语言的解决方案,请告诉我们!
TIA。
肯
答案 0 :(得分:7)
执行此操作的常用方法是tput lines
和tput cols
;这个查询按顺序:
$LINES
和$COLUMNS
环境变量; termios
设置,当您调整窗口大小时由终端模拟器设置; terminfo
标识的$TERM
说明。答案 1 :(得分:2)
从C,您可以使用TIOCGWINSZ
选项在ioctl
上进行/dev/tty
系统调用。
这由Term::ReadKey
模块公开 - 来自man perlfaq8
:
如何获取屏幕尺寸?
如果您从CPAN安装了
Term::ReadKey
模块,则可以使用它来获取字符和像素的宽度和高度:use Term::ReadKey; ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
答案 2 :(得分:1)
以交互方式运行时,bash定义$LINES
和$COLUMNS
。否则,使用curses / ncurses检索终端维度。