/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
$