确定终端中的行数

时间:2013-08-05 19:06:07

标签: bash d

我想写一个用d符号填充屏幕的短d程序。这就是我所拥有的

import std.stdio;
import std.process;
import std.conv;

void main(string[] args){
  auto lines =  environment.get("LINES");
  int line_count = to!int(lines); 
  for(int a = 1; a <= line_count; a++){
    writeln("######################################################################");
  }
}

我预计这会有效,因为当我从终端执行“echo $ LINES”时会打印“47”。但是,当我在同一个会话中通过rdmd运行程序时,LINES显示为空。这是在Ubuntu Raring上。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

如果你可以获取命令stty size的输出,那可能比检查$LINES$COLUMNS环境变量更可靠。

或者您可以按照this answer中的说明调用TIOCGWINSZ ioctl。

答案 1 :(得分:3)

如果您只是想要一个简单的解决方法,可以在export LINES COLUMNS中添加~/.bashrc,以便在您的程序中提供这些变量。

要获得正确的解决方案,您可以尝试调用ioctl TIOCGWINSZ,或者找到支持查询终端的D库(例如ncurses包装器)。