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?
LINES
yCOLUMNS
solo están fijados por algunos proyectiles.bash
los establece, pero solo para un shell interactivo (y no los exporta).shopt -s checkwinsize
que agregó en mi/etc/bash.bashrc
archivo 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 size
por lo que es posible que necesite algo como esto:fuente
tput lines
parece ser la mejor respuesta y la he votado. No lo sabía antes.stty -a
algo comogrep -Po 'rows \K[^;]*'
osed -n 's/.*rows \([^;]*\).*/\1/p'
tput lines
es mucho mejor, y creo que es bastante portátil!