J'écris un script qui montre le journal git pour un répertoire quand je le cède. Un tel journal peut être écrasant, contenant des centaines de lignes. Jusqu'à présent, j'ai limité cela à 20 lignes codées en dur ( ... | head -n 20
), ce qui est bien sur l'écran au travail, mais trop sur le petit écran du MacBook à la maison.
Je préférerais que le journal occupe environ la moitié de l'écran (vertical) de chaque terminal. Et "terminal" change également: c'est le terminal Gnome au travail, mais iTerm2 à la maison. Et je n'utilise ni écran ni tmux.
Comment trouver le nombre de lignes verticales disponibles dans un terminal à partir de la ligne de commande?
LINES
etCOLUMNS
ne sont fixés par des obus.bash
les définit, mais uniquement pour un shell interactif (et il ne les exporte pas).shopt -s checkwinsize
qui ont ajouté dans mon/etc/bash.bashrc
fichier avec commentaire:# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
Cette commande devrait vous donner le nombre de lignes sur le terminal:
Certains systèmes peuvent ne pas être implémentés
stty size
, vous pourriez donc avoir besoin de quelque chose comme ceci à la place:la source
tput lines
semble être la meilleure réponse et je l'ai votée positivement. Je ne le savais pas avant.stty -a
quelque chose commegrep -Po 'rows \K[^;]*'
oused -n 's/.*rows \([^;]*\).*/\1/p'
tput lines
c'est bien mieux, et je pense que c'est assez portable!