Ich schreibe ein Skript, in dem das Git-Protokoll für ein Verzeichnis angezeigt wird, wenn ich eine CD einlege. Ein solches Protokoll kann überwältigend sein und Hunderte von Zeilen enthalten. Bisher beschränkte ich mich auf 20 fest codierte Zeilen ( ... | head -n 20
), was für den Bildschirm bei der Arbeit in Ordnung ist, für den kleineren MacBook-Bildschirm zu Hause jedoch zu viel.
Ich würde es vorziehen, wenn das Protokoll auf beiden Terminals etwa die Hälfte des (vertikalen) Bildschirms einnimmt. Und "terminal" ändert sich auch: Es ist Gnome-Terminal bei der Arbeit, aber iTerm2 zu Hause. Und ich benutze keinen Bildschirm oder tmux.
Wie finde ich die Anzahl der in einem Terminal verfügbaren vertikalen Linien über die Befehlszeile?
LINES
undCOLUMNS
werden nur von einigen Muscheln gesetzt.bash
legt sie fest, aber nur für eine interaktive Shell (und exportiert sie nicht).shopt -s checkwinsize
die in meiner/etc/bash.bashrc
Datei mit Kommentar hinzugefügt wurden :# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
Dieser Befehl sollte Ihnen die Anzahl der Zeilen im Terminal anzeigen:
Einige Systeme werden möglicherweise nicht implementiert,
stty size
sodass Sie stattdessen möglicherweise Folgendes benötigen:quelle
tput lines
scheint die bessere Antwort zu sein und ich habe es positiv bewertet. Ich wusste es vorher nicht.stty -a
durch so etwas wiegrep -Po 'rows \K[^;]*'
odersed -n 's/.*rows \([^;]*\).*/\1/p'
tput lines
ist viel besser und ich denke, es ist ziemlich portabel!