Piszę skrypt, który pokazuje dziennik git dla katalogu, gdy do niego piszę. Taki dziennik może być przytłaczający, zawierający setki linii. Do tej pory ograniczałem to do 20 zakodowanych na stałe linii ( ... | head -n 20
), co jest w porządku na ekranie w pracy, ale za dużo na mniejszym ekranie MacBooka w domu.
Wolałbym, aby dziennik zajmował około połowy (pionowego) ekranu na dowolnym terminalu. Zmienia się także „terminal”: to terminal Gnome w pracy, ale iTerm2 w domu. I nie używam screena ani tmuxa.
Jak znaleźć liczbę pionowych linii dostępnych w terminalu z wiersza poleceń?
LINES
iCOLUMNS
są ustawione tylko przez niektóre powłoki.bash
ustawia je, ale tylko dla interaktywnej powłoki (i nie eksportuje ich).shopt -s checkwinsize
które zostały dodane do mojego/etc/bash.bashrc
pliku z komentarzem:# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
To polecenie powinno podać liczbę linii na terminalu:
Niektóre systemy mogą nie zostać zaimplementowane,
stty size
dlatego możesz potrzebować czegoś takiego:źródło
tput lines
wydaje się lepszą odpowiedzią, a ja ją głosowałem. Nie wiedziałem o tym wcześniej.stty -a
czymś takim jakgrep -Po 'rows \K[^;]*'
lubsed -n 's/.*rows \([^;]*\).*/\1/p'
tput lines
jest o wiele lepszy i myślę, że jest całkiem przenośny!