bash shell 可以自动识别 Gnome 终端窗口的宽度吗?

bash shell 可以自动识别 Gnome 终端窗口的宽度吗?

/bin/less是 Ubuntu 14.04.3 LTS 桌面操作系统上的默认寻呼机($PAGER变量未设置),并使用 gnome-terminal 3.6.2-ubuntu1。

例如,如果我尝试:

$ man man

显示的输出符合当前 Gnome 终端窗口的宽度。那里没问题。但是当我这样做时:

$ man man | egrep regex

输出不会自动识别终端窗口的宽度。在终端菜单“编辑”>“配置文件首选项”>“默认大小”中设置 83 列时,某些线条不符合终端宽度,并且无法正确调整为宽度。结果我得到了几个实例:

<standard input>:981: warning [p 8, 0.5i, div `3tbd1,0', 0.0i]: cannot adjust line

(上面警告中的某些字符因警告而异,大概是因为它们指向位于输出中不同位置的有问题的输出行。)

寻呼机似乎没有错误,因为使用命令时不会发生这种情况man man

从符合 Gnome 终端窗口宽度的角度来看,是否是管道或管道的 rhs 扰乱了事物?有办法补救吗?

编辑1: 有什么办法可以解决吗 在会话级别,即自动,即无需每次输入将打印到 stdout 的 cmd 行时检查 Gnome 终端的当前窗口宽度?

答案1

我用:

 echo $COLUMNS

而不是 stty。也许它也适合你。也许这取决于 stty。

答案2

回答您的主要问题:是的,从 bash shell 中可以识别终端窗口的大小。命令stty是从任何 shell 中确定这一点的一种方法。

$ stty -a|head -1
speed 38400 baud; rows 49; columns 90; line = 0;
$ stty size
49 90
$

相关内容