Saya sedang menulis skrip yang menunjukkan git log untuk direktori ketika saya memasukkannya ke dalamnya. Log seperti itu bisa luar biasa, mengandung ratusan baris. Sejauh ini saya telah membatasi bahwa untuk 20 baris kode keras ( ... | head -n 20
), yang bagus di layar di tempat kerja, tetapi terlalu banyak pada layar MacBook yang lebih kecil di rumah.
Saya lebih suka log untuk mengambil sekitar setengah layar (vertikal) di terminal manapun. Dan "terminal" juga berubah: terminal Gnome sedang bekerja, tetapi iTerm2 di rumah. Dan saya tidak menggunakan layar atau tmux.
Bagaimana cara menemukan jumlah garis vertikal yang tersedia di terminal dari baris perintah?
LINES
danCOLUMNS
hanya diatur oleh beberapa shell.bash
set mereka, tetapi hanya untuk shell interaktif (dan itu tidak mengekspornya).shopt -s checkwinsize
yang ditambahkan dalam/etc/bash.bashrc
file saya dengan komentar:# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
Perintah ini akan memberi Anda jumlah baris pada terminal:
Beberapa sistem mungkin tidak menerapkan
stty size
sehingga Anda mungkin memerlukan sesuatu seperti ini sebagai gantinya:sumber
tput lines
sepertinya jawaban yang lebih baik dan saya telah memutarnya. Saya tidak tahu tentang itu sebelumnya.stty -a
sesuatu sepertigrep -Po 'rows \K[^;]*'
ataused -n 's/.*rows \([^;]*\).*/\1/p'
tput lines
itu jauh lebih baik, dan saya pikir ini cukup portabel!