Cada vez que alguien establece un tamaño diferente para una consola virtual, lessreconoce la resolución de la ventana (supongo que ...); de acuerdo con eso, cambia cuántas líneas de texto debe visualizar. ¿Cómo se calcula ese parámetro?
12

Respuestas:
Si está buscando una forma de verificar desde un script, puede hacer cualquiera de estos:
tput colsytput lines, como sugiere manatworkPero si quieres los detalles, aquí vamos:
Para terminales virtuales (xterm, et al) hay una
ioctl()llamada al sistema que le indicará el tamaño de la ventana. Si puede,lessutiliza esta llamada. Además, cuando cambia el tamaño de la ventana, todo lo que se está ejecutando en esa ventana recibe unaSIGWINCHseñal que le permitelesssaber que debe verificar un nuevo tamaño de ventana. Por ejemplo, comencé alessejecutar (como ID de proceso 16663), me conecté a élstracey cambié el tamaño de la ventana. Esto es lo que vi:Esto también es qué
tput colsytput lineshacer detrás de escena, si pueden. Para obtener más información sobre este método, consulteman tty-ioctly busque TIOCGWINSZ.Sin embargo, para otros terminales, como los conectados a puertos serie, no hay forma de obtener esta información directamente. En ese caso,
lesscomienza a buscar pistas en las variables de entorno.LINESyCOLUMNSa menudo se establecerá en las dimensiones del terminal. De hecho, si puedebasho nozshpuede encontrar las dimensiones del terminal, establecerá automáticamente estas variables para facilitar que los programas no tan inteligentes vean el tamaño del terminal. Sin embargo, la mayoría de los otros shells, incluidosdashytcsh, no establecen estas variables.TERMgeneralmente se establece en el tipo de terminal, en cuyo caso la base de datos terminfo puede contener el tamaño esperado del terminal. Sitput rowsno puede usar el IOCTL (por ejemplo, si está conectado a través de un puerto serie), volverá a los valores registrados aquí. Para un terminal cuyo tamaño puede cambiar, esto es solo una suposición y es probable que esté equivocado.Para obtener más información, consulte
man tputel comando para controlar el terminal yman terminfouna lista de cosas que puede indicarle al terminal que haga.fuente
Si observa el código fuente, sabrá las
lessllamadasioctl()para recuperar el tamaño de la ventana en Linux.fuente
No estoy seguro de si esta es la información que está buscando. Supongo que
lessregistra un controlador de señal paraSIGWINCH. Cuando la dimensión del terminal cambia, obtiene unaSIGWINCHseñal y sondea la información tty para la dimensión actual del terminal. http://www.gnu.org/software/libc/manual/html_node/Miscellaneous-Signals.htmlfuente