Estoy escribiendo un script que muestra el registro de git para un directorio cuando hago un CD en él. Tal registro puede ser abrumador, ya que contiene cientos de líneas. Hasta ahora he estado limitando eso a 20 líneas codificadas ( ... | head -n 20), lo cual está bien en la pantalla en el trabajo, pero demasiado en la pantalla más pequeña de MacBook en casa.
Preferiría que el registro ocupe aproximadamente la mitad de la pantalla (vertical) en cualquier terminal. Y "terminal" también cambia: es la terminal Gnome en el trabajo, pero iTerm2 en casa. Y no uso screen o tmux.
¿Cómo encuentro el número de líneas verticales disponibles en un terminal desde la línea de comando?

LINESyCOLUMNSsolo están fijados por algunos proyectiles.bashlos establece, pero solo para un shell interactivo (y no los exporta).shopt -s checkwinsizeque agregó en mi/etc/bash.bashrcarchivo con comentario:# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.Este comando debería darle el número de líneas en la terminal:
Es posible que algunos sistemas no se implementen,
stty sizepor lo que es posible que necesite algo como esto:fuente
tput linesparece ser la mejor respuesta y la he votado. No lo sabía antes.stty -aalgo comogrep -Po 'rows \K[^;]*'osed -n 's/.*rows \([^;]*\).*/\1/p'tput lineses mucho mejor, y creo que es bastante portátil!