Terminalde bulunan dikey hat sayısını nasıl bulabilirim?


12

Ben içine cd zaman bir dizin için git günlüğünü gösteren bir komut dosyası yazıyorum. Böyle bir günlük, yüzlerce satır içeren ezici olabilir. Şimdiye kadar bunu ... | head -n 20işyerinde ekranda iyi olan, ancak evde daha küçük MacBook ekranında çok fazla olan sabit kodlu 20 satırla ( ) sınırlandırıyorum .

Günlüğün her iki terminalde de (dikey) ekranın yarısını almasını tercih ederim. Ve "terminal" de değişir: işte Gnome terminali, ama evde iTerm2. Ve ekran veya tmux kullanmıyorum.

Bir terminalde bulunan dikey satır sayısını komut satırından nasıl bulurum?

Yanıtlar:


21

Terminal parametreleri $LINESve $COLUMNSdeğişkenleri olarak saklanır .

Ayrıca, özel terim programı kullanabilirsiniz, örneğin tput:

tput lines  # outputs the number of lines of the present terminal window.
tput cols   # outputs the number of columns of the present terminal window.

9
LINESve COLUMNSsadece bazı mermiler tarafından ayarlanır. bashOnları ayarlar ancak (ve bunları ihraç etmez) sadece bir interaktif kabuk.
mr.spuratic

1
Ortam değişiyor benim tcsh içinde yok. Ayrıca, terminal penceresini yeniden boyutlandırırsanız sistemin bunları sıfırlayıp sıfırlamayacağını merak ediyorum. Hem tput hem de stty benim için çalışıyor, bu yüzden yeni bir şey öğrendim :-)
jamesqf

@jamesqf bash belgelerinde "SIGWINCH alındığında otomatik olarak ayarlanır" yazıyor. yani, terminal penceresini yeniden boyutlandırırsanız bunları değiştirir.
Celada

Vaiable yukarıdaki autoset için shopt -s checkwinsizebenim /etc/bash.bashrcdosyaya yorum ile eklenen aşağıdaki seçenekler sorumludur :# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
Costas

9

Bu komut, terminaldeki satır sayısını vermelidir:

stty size | cut '-d ' -f1

Bazı sistemler uygulanmayabilir, stty sizebu nedenle bunun gibi bir şeye ihtiyacınız olabilir:

stty -a | tr \; \\012 | grep rows | tr -d ' rows'

1
Bu işletim sistemine özgü görünüyor. Her bir büyütmenin çalıştığı sistemlerin listesini derleyebilir misiniz?
Warren Young

4
Birincisinin işletim sistemine özgü olabileceğinden korktum, bu yüzden ikincisini ekledim. Gerçekten de Google'ın biraz çalışmasından sonra, ilkinin muhtemelen Solaris üzerinde çalışmadığını görüyorum. İkincisi çok taşınabilir olmalıdır. Dürüst olmak gerekirse, @Costas ' tput linesdaha iyi bir cevap gibi görünüyor ve ben bunu iptal ettim. Daha önce bilmiyordum.
Celada

1
Birlikte yerine uzun boruyu sunmak istiyorum stty -agibi bir şey tarafından grep -Po 'rows \K[^;]*'yased -n 's/.*rows \([^;]*\).*/\1/p'
Costas

@Costas aslında, sinir bozucu bir şekilde, ne benim komutum ne de biriniz MacOS'ta çalıştı, bu yüzden farklı bir komut bulmalıydım (düzenlenmiş). Şekil gidin: MacOS, "24 satır" yerine "24 satır" yayınlıyor! Hala tput linesdaha iyi olduğunu düşünüyorum ve bence oldukça taşınabilir!
Celada
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.