如何快速检查我的终端有多少列?

如何快速检查我的终端有多少列?

窗口大小调整、字体大小改变等后,如何轻松快速地查看终端当前的显示宽度是多少?

答案1

这个问题已经被多次回答(和错误回答)。但:

  • tput cols提供操作系统可以告诉您的有关宽度的信息。

  • COLUMNS变量可能由您的 shell 设置,但是 (a) 它不可靠(在某些 shell 中设置)并且具有如果导出则存在缺点将要干扰全屏应用程序。

  • resize程序可以告诉您终端无法与操作系统协商其窗口大小的特殊情况的大小。

进一步阅读:COLUMNS在 ncurses 手册页中。

答案2

根据您的 shell,当窗口大小更改时,COLUMNS( 和) 变量可能会自动设置。 LINESbash、zsh、ksh 都可以。破折号没有。 tcsh 没有。

man bash

COLUMNS 由 select 复合命令用来确定打印选择列表时的终端宽度。如果启用了 checkwinsize 选项或在收到 SIGWINCH 后在交互式 shell 中自动设置。

线路

由 select 复合命令用来确定打印选择列表的列长度。如果启用了 checkwinsize 选项或在收到 SIGWINCH 后在交互式 shell 中自动设置。

我发现以下别名很有用:

$ alias ttystat='echo $(tty) $TERM ${COLUMNS}x$LINES'
$ ttystat
/dev/pts/2 xterm 192x51

答案3

毫无疑问有一种更短的方法,但是下面除了 POSIX 指定的实用程序之外不使用任何东西来进行快速交互式检查:

printf '0123456789\n1234567890\n' | sed '1s/./&&&&&&&&&&/g;1s/^.//;2s/.*/&&&&&&&&&&/'

运行命令并读取显示屏最右侧的数字。将其读为两位数向下;它告诉您有多少列。

72 列终端上的示例输出(如图所示):

$ printf '0123456789\n1234567890\n' | sed '1s/./&&&&&&&&&&/g;1s/^.//;2s/
.*/&&&&&&&&&&/'
000000000111111111122222222223333333333444444444455555555556666666666777
777777788888888889999999999
123456789012345678901234567890123456789012345678901234567890123456789012
3456789012345678901234567890
$

相关内容