stty size
gera o número de linhas e colunas do terminal atual; para extrair o número de linhas, mantenha apenas o primeiro campo:
stty size | cut -d\ -f1
Eu finalmente consegui ssh
no meu telefone, mas, ao fazer isso, percebo que alguns dos meus antigos scripts codificados são muito específicos para uma resolução de 80x24.
Estou ciente de que $COLUMNS
vai me dar meus 80 e permitir que eu faça algumas coisas, mas gostaria de descobrir onde posso acessar a outra dimensão do terminal que estou vendo .
Eu odiaria ter que codificar um conjunto para cada terminal, telefone ou outro hardware que eu usasse, mas agora parece que esta pode ser a melhor opção.
Meu telefone me dá 53x13 com o ConnectBot (não consegui encontrar uma solução melhor?), caso alguém se importe.
O equivalente a $COLUMNS
para linhas é $LINES
. Isso é definido por alguns shells como zsh
ou bash
(embora no caso de bash
, somente quando interativos) com base nas configurações de disciplina de linha de dispositivo tty (elas mesmas, normalmente definidas pelo emulador de terminal ou no caso de ssh
, por sshd
dos valores fornecidos pelo cliente (não sei se ConnectBot
envia esses)).
Você deve ser capaz de encontrar as informações na sua página de manual do shell. Por exemplo, para zsh
: info zsh LINES
.
Outras opções:
stty size
retorna as mesmas informações que <lines> <columns>
em uma linha. Em outros, eles geralmente aparecem na saída de stty -a
, embora em um formato que varia de sistema para sistema. ncurses
de tput
, você pode usar tput lines
e tput cols
para obter o número de linhas e colunas (que podem ser consultadas no banco de dados terminfo quando as informações não puderem ser recuperadas do dispositivo terminal). Alguns emuladores de terminal xterm
(não sei se esse é o caso do ConnectBot) permitem consultar o tamanho do terminal por meio de algumas seqüências de escape ( \e[18t
). Por exemplo, com zsh
:
IFS=";" read -sd t $'ignore?\e[18t' lines cols
para armazenar as dimensões em $lines
e $cols
.
com a maioria dos terminais, em vez da sequência de escape \e[18t
, também é possível usar seqüências de escape (mais comuns) que movem o cursor para o canto inferior direito da tela e consultam a posição do cursor lá. Isso é o que o utilitário resize
fornecido com xterm
realmente faz e pode ser usado para alinhar as configurações de tty a isso e definir as variáveis de ambiente $LINES
e $COLUMNS
para as shells que não o fazem por conta própria:
eval "$(resize -u)"