O comando tput
é uma excelente ferramenta, mas infelizmente não pode recuperar as configurações reais de um terminal selecionado arbitrariamente.
A razão para isto é que ele lê stdout para as características do terminal, e este é também onde ele escreve sua resposta. Então, no momento em que você tentar capturar a saída de tput cols
, você também removeu a fonte de suas informações.
Felizmente, stty
lê stdin em vez de stdout para determinar as características do terminal, então é assim que você pode recuperar as informações de tamanho necessárias:
terminal=/dev/pts/1
columns=$(stty -a <"$terminal" | grep -Po '(?<=columns )\d+')
rows=$(stty -a <"$terminal" | grep -Po '(?<=rows )\d+')
A propósito, a construção echo $(/usr/bin/tput cols)
é horrível.
Para qualquer construção echo $(some_command)
, você está executando some_command
e capturando sua saída, que você passa para echo
para a saída. Em quase todas as situações, você pode imaginar que você poderia simplesmente executar some_command
e deixá-lo entregar sua saída diretamente. É mais eficiente e também mais fácil de ler.