TAMANHO DE STTY
A maneira canônica é perguntar ao terminal sobre seu tamanho real, quando você quer conhecê-lo
stty size
imprime COLARES DE LINHAS.
Imprimir uma linha tracejada
Sobre sua segunda pergunta, seq
é seu amigo
stty size|if read rows cols
then for x in 'seq $cols'
do printf "-"
done fi
ou por awk
loop
stty size|awk '{ ORS="-"; n=$2; for (i=0; i<n; ++i) { print ""; } }'
.
Definir uma variável de linha
Mas, na verdade, seria melhor salvar nossa linha em uma variável
eval $(L=""; stty size|if read r c
then for x in 'seq $c'
do L="${L}-"
done
echo L="$L"
fi
)
Armadilha no SIGWINCH
Contanto que não seja necessário recalcular o tamanho do terminal
trap 'echo "recalculate L"' SIGWINCH
agora podemos usar $L
para imprimir a linha. Claro que você pode autotune sua variável $L
em SIGWINCH
:
trap 'eval $(L=""; stty size|if read r c
then for x in 'seq $c'
do L="${L}-"
done
echo L="$L"
fi
)' SIGWINCH
Em um terminal onde você configura, como trap
, você pode apenas dizer
echo $L
e você está feito.