GNU/Linux >> Belajar Linux >  >> Linux

Bash Hapus Perintah Perilaku Aneh Menghapus Buffer Scrollback.?

Setiap kali saya menjalankan clear di terminal saya, itu menghapus buffer scrollback dari atas layar ke baris saat ini. Saya telah mencobanya di xterm, st, dan urxvt, dan masalahnya tetap ada. Apakah ada cara saya dapat mengubah perilaku clear sehingga tidak menyentuh buffer scrollback?

Jawaban yang Diterima:

Komentar "dari atas layar ke baris saat ini" tidak jelas. Jika yang Anda maksud dari atas bagian yang terlihat layar, itu bukan scrollback . Scrollback terminal adalah bagian yang hanya dapat Anda lihat dengan menggunakan scrollbar (atau tombol yang sesuai seperti shift pageup).

Urutan Kontrol XTerm mendokumentasikan urutan pelarian yang relevan:

CSI Ps J  Erase in Display (ED).
            Ps = 0  -> Erase Below (default).
            Ps = 1  -> Erase Above.
            Ps = 2  -> Erase All.
            Ps = 3  -> Erase Saved Lines (xterm).

Kemampuan deskripsi terminal clear menggunakan yang berikutnya-ke-terakhir, mis.,

clear=E[HE[2J

untuk memposisikan kursor ke kiri atas dan kemudian menghapus seluruh layar (terlihat). Anda bisa gunakan Hapus Di Bawah , tapi itu tidak digunakan dalam deskripsi terminal.

Mengacu pada menghapus scrollback :Itu adalah fitur khusus terminal, awalnya merupakan escape sequence di xterm (1999, didokumentasikan di ctlseqs.ms tetapi tidak disebutkan dalam perubahan) dan kemudian (2011) diimplementasikan sebagai ekstensi untuk konsol Linux dan deskripsi terminal yang sesuai. Basis data terminal mencantumkannya sebagai “ekstensi lain-lain”.

Saat ini, deskripsi terminal ini memiliki fitur:

  • linux3.0 (default saat ini untuk “linux”)
  • dempul
  • xterm+basic (bahan penyusun yang digunakan di sebagian besar varian "xterm")

Apakah itu didukung di xterm mirip seperti VTE harus dijawab dengan pengujian (tidak ada dokumentasi yang berguna untuk VTE atau Konsole).

Jika Anda memilih untuk tidak menggunakan ekstensi, Anda dapat menghapus E3 kemampuan dari deskripsi terminal yang Anda gunakan, mis.,

infocmp -1x >foo
edit foo, removing the line with "E3="
tic -x foo

Saya menyarankan menggunakan opsi -1 dan -x untuk menyederhanakan pemformatan dan untuk menunjukkan fitur yang akan diubah. Contoh yang diberikan di https://ghostbin.com/paste/kfsbj konsisten dengan saran itu:

  • nama path /home/flowerpick/.terminfo/x/xterm akan digunakan oleh ncurses
  • kemampuan AX dan XT adalah kemampuan yang diperluas (seperti E3 ), ditunjukkan dengan -x pilihan.

Jika Anda menggunakan lebih dari satu jenis terminal, Anda harus melakukan ini untuk masing-masing (nilai $TERM ), dan perubahan hanya berlaku untuk mesin tempat Anda menjalankan clear . Beberapa baris pertama dari infocmp output menunjukkan mana yang sedang Anda kerjakan:

#   Reconstructed via infocmp from file: /home/flowerpick/.terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),

Misalnya, uxrvt set $TERM untuk sesuatu seperti rxvt-unicode , menghasilkan baris seperti ini di infocmp :

#       Reconstructed via infocmp from file: /lib/terminfo/r/rxvt-unicode       
rxvt-unicode|rxvt-unicode terminal (X Window System),

st program menggunakan xterm (atau mungkin xterm-256color ), meskipun sudah lama sejak saya melihat salinan itu yang bekerja cukup baik untuk dikomentari.

Terkait:Paksa layar kosong dan abaikan input?

Omong-omong, Anda bisa memiliki alias untuk clear yang mengirimkan urutan pelarian yang diberikan (mengabaikan deskripsi terminal), tetapi saya belum melihat ini dilaporkan oleh siapa pun.

Jika Anda ingin "menghapus di atas", itu tidak semudah mengetik "jelas". Pelarian

Linux
  1. Cara Menghapus Perintah Tertentu Dari Riwayat Bash Di Linux

  2. 5 penggunaan perintah mv di terminal linux

  3. Cara menghapus Terminal di Ubuntu

  1. Cara Menghapus Riwayat Baris Perintah BASH di Linux

  2. Cara Menghapus Riwayat Bash di Linux

  3. Bagaimana cara menghapus scrollback di perintah layar?

  1. | Di Perintah Terminal?

  2. perintah ekspor bash

  3. Jalankan perintah bash pada pipa jenkins