Estou escrevendo um script que mostra o log git para um diretório quando eu faço o cd nele. Esse registro pode ser esmagador, contendo centenas de linhas. Até agora, tenho limitado isso a 20 linhas codificadas ( ... | head -n 20
), o que é bom na tela do trabalho, mas muito na tela menor do MacBook em casa.
Eu preferiria que o log ocupasse cerca da metade da tela (vertical) em qualquer terminal. E o "terminal" também muda: é o terminal Gnome no trabalho, mas o iTerm2 em casa. E eu não uso screen ou tmux.
Como encontro o número de linhas verticais disponíveis em um terminal na linha de comando?
LINES
eCOLUMNS
são definidos apenas por algumas conchas.bash
os define, mas apenas para um shell interativo (e não os exporta).shopt -s checkwinsize
que foram adicionadas no meu/etc/bash.bashrc
arquivo com comentários: ## check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
Este comando deve fornecer o número de linhas no terminal:
Alguns sistemas podem não ser implementados;
stty size
portanto, você pode precisar de algo assim:fonte
tput lines
parece ser a melhor resposta e eu a votei de novo. Eu não sabia disso antes.stty -a
por algo comogrep -Po 'rows \K[^;]*'
oused -n 's/.*rows \([^;]*\).*/\1/p'
tput lines
é muito melhor, e acho que é bastante portátil!