GNU/Linux >> Belajar Linux >  >> Linux

Mengapa saya tidak bisa menggulir di terminal?

Untuk menginisialisasi ulang terminal, gunakan reset sederhana akan memperbaiki ini. Untuk info dan opsi selengkapnya, man reset


Jawaban @James Henstridge untuk pertanyaan AskUbuntu ini tampaknya mengidentifikasi kesalahan dengan benar karena terminal macet dalam mode "pengalamatan kursor", apa pun artinya.

Solusi pertamanya, perintah $ tput rmcup , berfungsi, meskipun tidak banyak penjelasan. Jadi, saya mencoba mencari tahu.

man tput memberitahu kita bahwa

tput utilitas menggunakan terminfo database untuk membuat nilai kapabilitas dan informasi yang bergantung pada terminal tersedia untuk shell (lihat sh(1)), untuk menginisialisasi atau mengatur ulang terminal, atau mengembalikan nama panjang dari jenis terminal yang diminta.

terminfo juga tidak didokumentasikan dengan sangat berguna. Sumber terlengkap yang dapat saya temukan adalah artikel tldp.org. Ternyata terminfo adalah basis data terminal yang berbeda dan perintah serta kemampuan apa yang mereka miliki. Mungkin setiap instalasi Linux memilikinya? Jadi Anda dapat menggunakan terminal yang berbeda?

man terminfo menunjukkan bahwa file-nya ada di /etc/terminfo/*/* , tetapi di Ubuntu 16.04 saya hanya menemukan README di sana. File sebenarnya ada di /lib/terminfo/*/*; misalnya /lib/terminfo/l/linux , file mana yang mungkin paling relevan untuk sebagian besar pembaca? Saya tidak tahu, karena file-file ini tidak dapat dibaca oleh manusia. Artikel tldp.org yang ditautkan di atas menyatakan bahwa infocmp dapat digunakan untuk melihat sumbernya, tetapi itu tidak benar:

$ infocmp /lib/terminfo/l/linux
infocmp: couldn't open terminfo file /lib/terminfo/l/linux.

Artikel tersebut juga menyebutkan file kode sumber /etc/termcap dan /etc/terminfo.src , tetapi ini tidak ada di Ubuntu 16.04. Saya menemukan satu set /usr/share/vte/termcap*/ direktori yang berisi xterm yang dapat dibaca manusia file. Saya harus menebak bahwa ini semua terhubung ke Terminal GNOME yang saya gunakan yang merupakan default untuk Ubuntu, tetapi saya lelah mencoba mencari tahu caranya.

man halaman untuk terminfo memang memiliki satu lagi catatan yang bermanfaat. Di bawah 'Predefined Capabilities' adalah 'Variable String' exit_ca_mode dengan 'capname' ("nama kemampuan", saya asumsikan) rmcup dengan keterangan strings to end programs using cup . Deskripsinya tidak terlalu membantu, tetapi nama variabelnya adalah; ini harus mengacu pada kemampuan terminal untuk keluar dari 'mode pengalamatan kursor', di mana terminal macet.

Jadi, $ tput rmcup harus menggunakan tput untuk mengakses terminfo database dan aktifkan exit_ca_mode terminal saat ini kemampuan rmcup , yang mematikan mode pengalamatan kursor dan mengembalikan terminal ke perilaku pengguliran normalnya.


Linux
  1. Mengapa Server Memblokir IP Saya?

  2. Mengapa (dan Bagaimana) Apakah Menggunakan Cat Pada File Biner Merusak Terminal?

  3. Mengapa mencetak ke stdout sangat lambat? Apakah bisa dipercepat?

  1. Bagaimana cara memeriksa HZ di terminal?

  2. Bagaimana saya bisa melihat atribut WMClass dari sebuah jendela di Xorg (linux)?

  3. Bagaimana saya bisa mencegah atau menghentikan salin/tempel yang tidak disengaja di terminal?

  1. Salin file di terminal Linux

  2. Ganti nama file di terminal Linux

  3. Mengapa saya tidak bisa `tail -f /proc/$pid/fd/1`?