GNU/Linux >> Linux Esercitazione >  >> Linux

Perché non riesco a scorrere nel terminale?

Per reinizializzare il terminale, un semplice reset risolverà questo problema. Per ulteriori informazioni e opzioni, man reset


La risposta di @James Henstridge a questa domanda di AskUbuntu sembra identificare correttamente l'errore mentre il terminale si blocca in una modalità di "indirizzamento del cursore", qualunque cosa significhi.

La sua prima soluzione, il comando $ tput rmcup , funziona, anche se non c'è molto in termini di spiegazione. Quindi, ho cercato di capirlo.

man tput ci dice che

Il tput l'utility usa il terminfo database per rendere disponibili alla shell i valori delle capacità e delle informazioni dipendenti dal terminale (vedere sh(1)), per inizializzare o resettare il terminale, o restituire il nome lungo del tipo di terminale richiesto.

terminfo inoltre non è molto utilmente documentato. La fonte più completa che posso trovare è un articolo tldp.org. Evidentemente terminfo è un database di diversi terminali e quali comandi e capacità hanno. Presumibilmente ogni installazione Linux ne ha una? Quindi puoi usare terminali diversi?

man terminfo indica che i suoi file sono in /etc/terminfo/*/* , ma su Ubuntu 16.04 ho trovato solo un README lì. I file reali sono in /lib/terminfo/*/*; per esempio. /lib/terminfo/l/linux , qual è probabilmente il file più rilevante per la maggior parte dei lettori? Non posso dirlo, perché questi file non sono leggibili dall'uomo. L'articolo tldp.org collegato sopra afferma che infocmp può essere utilizzato per vedere la loro fonte, ma non è vero:

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

L'articolo menziona anche i file di codice sorgente /etc/termcap e /etc/terminfo.src , ma questi non esistono in Ubuntu 16.04. Ho trovato un set di /usr/share/vte/termcap*/ directory che contengono xterm leggibile dall'uomo File. Dovrei indovinare che tutto questo si connette al terminale GNOME che sto usando che è l'impostazione predefinita per Ubuntu, ma sono stanco di cercare di capire come.

Il man pagina per terminfo ha un altro jot utile, però. Sotto le sue "Capacità predefinite" c'è una "Stringa variabile" exit_ca_mode con 'capname' ("capability name", presumo) rmcup con la descrizione strings to end programs using cup . La descrizione non è molto utile, ma il nome della variabile lo è; questo deve riferirsi alla capacità di un terminale di uscire dalla "modalità di indirizzamento del cursore", che è ciò in cui il terminale è bloccato.

Quindi, $ tput rmcup deve utilizzare tput per accedere al terminfo database e attivare il exit_ca_mode del terminale corrente capacità rmcup , che interrompe la modalità di indirizzamento del cursore e riporta il terminale al normale comportamento di scorrimento.


Linux
  1. Copia i file nel terminale Linux

  2. Rinominare un file nel terminale Linux

  3. Sposta i file nel terminale Linux

  4. Perché (e come) l'uso di Cat su file binari ha rovinato il terminale?

  5. Dov'è il file di intestazione <conio.h> su Linux? Perché non riesco a trovare <conio.h>?

Perché uso rxvt come terminale

La riga di comando di Linux può portare divertimento da lontano

Guarda i video di YouTube sul terminale Linux

Perché amo ancora Alpine per la posta elettronica sul terminale Linux

Perché è necessario il segmento .bss?

Come posso impedire o interrompere il copia/incolla accidentale nel terminale?