Eu uso:
echo $COLUMNS
em vez de stty. Talvez funcione para você também. Talvez isso dependa da stty.
/bin/less
é o pager padrão em um SO de desktop LTS do Ubuntu 14.04.3 (a variável $PAGER
não está definida) e o gnome-terminal 3.6.2-ubuntu1 é usado.
Se eu tentar por exemplo:
$ man man
A saída exibida está de acordo com a largura da janela do terminal Gnome atual. Não há problema aí. No entanto, quando eu faço:
$ man man | egrep regex
A saída não reconhece automaticamente a largura da janela do terminal. Com uma configuração de 83 colunas no menu do terminal, clique em Editar > Preferências de perfil > Tamanho padrão, algumas linhas não estão de acordo com a largura do terminal e não estão corretamente ajustadas à largura. Como resultado, recebo várias instâncias de:
<standard input>:981: warning [p 8, 0.5i, div '3tbd1,0', 0.0i]: cannot adjust line
(alguns caracteres no aviso acima variam de aviso para aviso, presumivelmente porque apontam para linhas de saída problemáticas localizadas em locais diferentes na saída.)
O pager não parece estar com defeito, já que isso não acontece com o comando man man
.
Poderia ser o pipe ou os rhs do pipe interrompendo as coisas do ponto de vista da conformidade com a largura da janela do terminal do Gnome? Existe uma maneira de remediar isso?
EDIT 1 : Existe uma maneira de remediar o no nível da sessão , ou seja, automaticamente, ou seja, sem precisar verificar a corrente atual do terminal Gnome Largura da janela toda vez que eu digito uma linha cmd que irá imprimir no stdout?
Eu uso:
echo $COLUMNS
em vez de stty. Talvez funcione para você também. Talvez isso dependa da stty.
Em resposta a sua pergunta principal: sim, de dentro de um shell bash é possível reconhecer o tamanho de uma janela de terminal. O comando stty
é uma maneira de determinar isso de qualquer shell.
$ stty -a|head -1
speed 38400 baud; rows 49; columns 90; line = 0;
$ stty size
49 90
$
Tags gnome-terminal bash output