Bagaimana cara mencegah perintah HP-UX "kurang" dari mengacaukan prompt saya?

8

Saya tidak suka keluaran morepada HP-UX, jadi saya gunakan lesssebagai pager:

PAGER=less

Outputnya bagus, tetapi, di Linux, ketika saya menggunakan mandan kemudian berhenti, saya kembali ke shell, dan tampilan tampak seperti cara saya meninggalkannya, tetapi pada HP-UX, ketika saya kembali ke shell, ada adalah garis parsial yang tersisa sebelum prompt, seperti yang dihasilkan oleh perintah berikut:

echo -e "text \c"

Lihat ini:

  • pada HP-UX:

    user@hpux2:~$ man ls
    Riformattazione in corso. Attendere...user@hpux2:~$
    

(pesan dalam bahasa Italia berarti "Memformat ulang sedang berlangsung, harap tunggu")

  • di Linux:

    user@linux:~$ man ls
    user@linux:~$
    

Bagaimana cara mengatasi masalah ini?

elbarna
sumber
Apakah Anda berhenti dengan memberi qatau menggunakan CTRL+C. Saya memiliki mesin HPUX dan sepertinya kembali ke baris baru (mirip dengan linux) jika saya memberi qatau CTRL+C. Saya miliki EDITOR=vidalam variabel lingkungan saya.
rahul
Tentu saja q, saya punya EDITOR = vim, saya coba juga EDITOR = vi tetapi tidak ada yang berubah
elbarna

Jawaban:

1

Pertukaran layar dilakukan dengan kode kontrol terminal. Kode tersebut didokumentasikan di bawah terminfo(5). Dua yang terlibat dalam penyimpanan / pemulihan layar biasanya smcupdan rmcup. Yang pertama menyalakan mode pengalamatan kursor khusus terminal (sm = "set mode") dan yang kedua mematikannya. Biasanya, keduanya akan menyimpan layar dan mengembalikannya.

Jika pemulihan layar tidak berfungsi, entri tersebut mungkin salah untuk jenis terminal Anda. Anda dapat mencetak isi dari entri terminfo saat ini menggunakan infocmpperintah. Anda harus melihat entri tersebut ( smcupdan rmcup) dan membandingkan urutan melarikan diri dengan manual terminal Anda untuk menentukan apa yang mereka lakukan. Kemungkinan terminal Anda hanya sedikit berbeda dari yang diharapkan oleh entri terminfo.

Azhrei
sumber
Mungkin ada beberapa bug dengan hpux xterm, menggunakan dtterm sebagai terminal berfungsi dengan baik juga untuk man
elbarna
Itu kemungkinan. Kadang-kadang emulator terminal akan mengklaim sebagai "ini-dan-itu kompatibel" tetapi mengabaikannya. Ketika sistem kemudian mendefinisikan jenis terminal sebagai "ini-dan-itu", tampilan menjadi kacau. Bisa juga bahwa xterm HP memiliki nilai khusus untuk digunakan untuk JANGKA dan itu tidak diatur dengan benar (mungkin profil mengubahnya?).
Azhrei
2

Fitur yang disebutkan adalah layar alternatif xterm yang diperkenalkan pada X.V10R4 (Desember 1986). Meskipun fitur ini didukung, itu tidak ditambahkan ke deskripsi terminal hingga X11R6 (sekitar sepuluh tahun).

Deskripsi terminal HPUX untuk xtermkebetulan sama dengan deskripsi X11R5, dengan beberapa tambahan (terutama tombol fungsi 1-12). Sekali lagi, fitur (tombol fungsi) telah didukung oleh program untuk beberapa waktu, tetapi tidak ditambahkan ke deskripsi terminal.

Inilah infocmplaporan untuk HPUX:

#       Reconstructed via infocmp from file: /usr/share/lib/terminfo/x/xterm
xterm|vs100|xterm terminal emulator,
        am, km, xenl,
        cols#80, lines#65,
        bel=^G, blink=@, bold=\E[1m, civis=\E[?25I,
        clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\b,
        cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
        cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
        dl1=\E[M, ed=\E[J, el=\E[K, home=\E[1;1H, ht=\t,
        hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
        il1=\E[L, ind=\n, kbs=\177, kcub1=\EOD, kcud1=\EOB,
        kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR,
        kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
        kf8=\E[19~, kf9=\E[20~, knp=\E[6~, kpp=\E[5~, rc=\E8,
        rev=\E[7m, ri=\EM, rmkx=\E[?1l, rmso=\E[m,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=@,
        sc=\E7,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
        sgr0=\E[m, smkx=\E[?1h, smso=\E[7m, tbc=\E[3g,

Berikut ini tautan ke file X11R6 , dan X11R3 (tidak diubah melalui X11R5). Fitur layar alternatif dalam deskripsi terminal X11R6 disediakan oleh baris ini :

smcup=\E7\E[?47h, rmcup=\E[2J\E[?47l\E8,

Dengan ncurses (Linux, dll), Anda memiliki deskripsi terminal jauh lebih baru yang mencantumkan semua fitur yang berlaku.

Untuk HPUX, Anda dapat memperbaiki masalah dengan menggunakan tic untuk menyusun deskripsi terminal dengan fitur yang ditambahkan. Jika Anda memiliki akses root pada mesin HPUX, itu mudah:

infocmp >foo
vi foo (adding the `smcup` and `rmcup` line)
sudo tic foo

Jika tidak, Anda dapat bekerja di sekitar itu dengan menetapkan terminfo environment variable to your own terminfo directory, and runningtic` untuk mengkompilasi menjadi yang direktori. Sesuatu seperti

TERMINFO=$HOME/myterm; export TERMINFO
mkdir -p $TERMINFO/x
tic foo

(Anda juga perlu TERMINFOmengatur di shell Anda untuk sesi tindak lanjut).

Thomas Dickey
sumber