Setiap kali seseorang menetapkan ukuran yang berbeda untuk konsol virtual, less
mengenali resolusi jendela (saya berasumsi bahwa ...); menurut itu, ia mengubah berapa banyak baris teks yang harus divisualisasikan. Bagaimana parameter itu dihitung?
12
Jawaban:
Jika Anda mencari cara untuk memeriksa dari skrip, Anda dapat melakukan salah satu dari ini:
tput cols
dantput lines
, seperti yang disarankan manatworkTetapi jika Anda menginginkan detailnya, ini dia:
Untuk terminal virtual (xterm, et al) ada
ioctl()
panggilan sistem yang akan memberi tahu Anda ukuran jendela itu. Jika bisa,less
gunakan panggilan ini. Selain itu, ketika Anda mengubah ukuran jendela, apa pun yang berjalan di jendela itu menerimaSIGWINCH
sinyal yang memberiless
tahu bahwa itu harus memeriksa ukuran jendela baru. Sebagai contoh, saya mulailess
menjalankan (sebagai ID proses 16663), terhubung dengannyastrace
, dan mengubah ukuran jendela. Inilah yang saya lihat:Ini juga apa
tput cols
dantput lines
lakukan di belakang layar, jika mereka bisa. Untuk info lebih lanjut tentang metode ini, lihatman tty-ioctl
dan cari TIOCGWINSZ.Untuk terminal lain seperti yang terhubung ke port serial, tidak ada cara untuk mendapatkan info ini secara langsung. Dalam hal itu,
less
mulailah mencari petunjuk dalam variabel lingkungan.LINES
danCOLUMNS
akan sering diatur ke dimensi terminal. Bahkan, jikabash
atauzsh
dapat menemukan dimensi terminal, ia akan secara otomatis mengatur variabel-variabel ini sendiri, untuk memudahkan program yang tidak terlalu pintar untuk melihat ukuran terminal. Namun, kebanyakan shell lain, termasukdash
dantcsh
, tidak mengatur variabel-variabel ini.TERM
biasanya diatur ke tipe terminal, dalam hal ini basis data terminfo dapat berisi ukuran terminal yang diharapkan. Jikatput rows
tidak dapat menggunakan IOCTL (misalnya, jika Anda terhubung melalui port serial), itu akan kembali ke nilai yang dicatat di sini. Untuk terminal yang ukurannya bisa berubah, ini hanya dugaan dan kemungkinan salah.Untuk info lebih lanjut, lihat
man tput
perintah untuk mengendalikan terminal, danman terminfo
untuk daftar hal-hal yang bisa Anda katakan kepada terminal.sumber
Jika Anda melihat kode sumbernya, Anda akan tahu
less
panggilanioctl()
untuk mengambil ukuran jendela di Linux.sumber
Saya tidak yakin apakah ini informasi yang Anda cari. Saya kira
less
register untuk pengendali sinyalSIGWINCH
. Ketika dimensi terminal berubah, ia mendapatSIGWINCH
sinyal dan menyelidiki informasi tty untuk dimensi terminal saat ini. http://www.gnu.org/software/libc/manual/html_node/Miscellaneous-Signals.htmlsumber