Toda vez que alguém define um tamanho diferente para um console virtual, less
reconhece a resolução da janela (suponho que ...); de acordo com isso, altera quantas linhas de texto deve visualizar. Como esse parâmetro é calculado?
12
Respostas:
Se você estiver procurando uma maneira de verificar a partir de um script, execute um destes procedimentos:
tput cols
etput lines
, como sugere o manatworkMas se você quiser os detalhes, aqui vamos nós:
Para terminais virtuais (xterm, et al), há uma
ioctl()
chamada do sistema que informará o tamanho da janela. Se puder,less
use esta chamada. Além disso, quando você altera o tamanho da janela, o que estiver em execução nessa janela recebe umSIGWINCH
sinal que informaless
que deve verificar se há um novo tamanho de janela. Por exemplo, iniciei umaless
execução (como identificação do processo 16663), conectei a elastrace
e redimensionei a janela. Isto é o que eu vi:Isso também é o que
tput cols
etput lines
fazer nos bastidores, se puderem. Para mais informações sobre esse método, consulteman tty-ioctl
e pesquise TIOCGWINSZ.Para outros terminais, como os conectados às portas seriais, não há como obter essas informações diretamente. Nesse caso,
less
começa a procurar pistas nas variáveis de ambiente.LINES
eCOLUMNS
geralmente será definido para as dimensões do terminal. De fato, sebash
ouzsh
puder encontrar as dimensões do terminal, ele definirá automaticamente essas variáveis automaticamente, para facilitar para os programas não tão inteligentes ver o tamanho do terminal. No entanto, a maioria dos outros shells, incluindodash
etcsh
, não define essas variáveis.TERM
geralmente é definido como o tipo de terminal; nesse caso, o banco de dados terminfo pode conter o tamanho esperado do terminal. Setput rows
não puder usar o IOCTL (por exemplo, se você estiver conectado por uma porta serial), ele retornará aos valores registrados aqui. Para um terminal cujo tamanho pode mudar, isso é apenas um palpite e provavelmente está errado.Para obter mais informações, consulte
man tput
o comando para controlar o terminal eman terminfo
uma lista de coisas que você pode solicitar ao terminal.fonte
Se você der uma olhada no código fonte, conhecerá as
less
chamadasioctl()
para recuperar o tamanho da janela no Linux.fonte
Não tenho certeza se esta é a informação que você está procurando. Eu acho que
less
registra um manipulador de sinal paraSIGWINCH
. Quando a dimensão do terminal muda, ele recebe umSIGWINCH
sinal e examina as informações tty da dimensão atual do terminal. http://www.gnu.org/software/libc/manual/html_node/Misc Miscellaneous-Signals.htmlfonte