Os shells de bash podem reconhecer automaticamente a largura da janela do terminal do Gnome?

1

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

    
por Cbhihe 06.08.2015 / 22:55

2 respostas

1

Eu uso:

 echo $COLUMNS

em vez de stty. Talvez funcione para você também. Talvez isso dependa da stty.

    
por 07.08.2015 / 02:00
0

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
$
    
por 06.08.2015 / 23:09