Dan jangan katakan " $TERM" - itu selalu xterm.
Bagaimana bashskrip dapat mengetahui terminal apa yang sedang berjalan, khususnya apakah itu iTerm, Terminal.app, atau sebenarnya xterm?
Saya bertanya karena resettidak berfungsi di luar kotak pada Terminal.app dan iTerm2. Namun, iTerm2 mengenali urutan pelarian untuk melakukan reset terminal ( \x1b]50;ClearScrollback\x07), dan jika saya bisa mendeteksinya, saya bisa menimpanya resetdengan alias yang melakukan hal yang benar. AFAICT, Terminal.app tidak memiliki urutan reset, dan orang - orang menggunakan tom-hackery konyol untuk meretas itu .
Tujuan akhir saya di sini adalah untuk resetbekerja sama apakah saya bekerja pada OS X atau Linux, bekerja secara lokal atau jarak jauh melalui SSH. (Saya tidak ingin harus mencoba mengingat yang mana, dan ini berguna untuk melakukan reset && command-that-outputs-a-bunchdan memiliki pekerjaan yang masuk). Terminal.app dan iTerm melemparkan kunci pas dalam rencana ini dengan tidak menerapkan resetdengan benar.
Ini berarti bahwa mengganti saja resettidak cukup: jika saya menggunakan mesin Linux, itu perlu tahu apakah saya menggunakan gnome-terminalatau iTerm untuk mengirim urutan pelarian yang tepat.
Apakah ada cara (bahkan jika saya memerlukan ioctl) untuk bertanya terminal apa itu sebenarnya ?
¹Untuk keperluan pertanyaan ini, reset harus menghapus layar, mengatur ulang kursor, dan menghapus buffer scrollback.
reset, karena itulah yang jari saya tahu.
resetperintah untuk menghapus konten gulir-kembali emulator terminal, tetapi itu tidak dijamin untuk melakukan itu, karena gulir-kembali adalah fitur khusus terminal emulator, bukan benar-benar sebuah bagian dari terminal. Namun, Terminal mendukung ekstensi dari urutan pelepasan ED (Erase in Display) untuk menghapus scroll-back ESC [ 3 J. Anda dapat menghapus layar, lalu menggunakannya, misalnya,reset && printf '\e[3J’
xterm(melalui TERM=xterm) saya berharap Anda meniru superset dari XTerm, yang menghapus scrollback-nya saat reset. (Sama seperti jika Anda mengirim urutan pelarian untuk "biru", Anda akan mengharapkan biru.) Memang, xterm saya mengatakan kepada saya bahwa Erase is backspace., yang saya syukuri tidak ada yang lain; itu hanya menjengkelkan.
Terminal.apppengaturan, tab terminal dan mengatur garis scrollback ke 0? Apakah itu menonaktifkan sebagian dan semua teks di atas baris saat ini, atau hanya apa pun di atas layar? Saya tahu, itu bukan apa yang Anda minta, layak dicoba.