Bagaimana cara benar-benar membersihkan terminal?

385

Saya dapat mengeluarkan clearperintah atau tekan Ctrl+ Luntuk menghapus terminal Ubuntu saat ini, tetapi ini hanya menggeser output sebelumnya ke atas dan jika Anda menggunakan gulir mouse atau PgUPdan PgDowntombol sulit untuk membedakan di mana output dari perintah sebelumnya berakhir dan output dari perintah saat ini dimulai.

Apakah ada cara untuk benar - benar membersihkan terminal sehingga saya tidak akan melihat hasil perintah sebelumnya?

Stann
sumber
11
Tekan Ctrl + L dua kali dan Anda kosong!
Pandya

Jawaban:

456

Ya, perintah yang Anda cari adalah

reset

Berbeda dengan clear, atau Ctrl+ L, resetakan benar-benar menginisialisasi ulang terminal , bukan hanya membersihkan layar. Namun, itu tidak akan instantiate shell (bash). Itu berarti keadaan bash sama dengan sebelumnya, sama seperti jika kamu hanya membersihkan layar.

Seperti @Wallacoloo menyebutkan dalam komentar, perintah ini harus melakukan hal yang sama lebih cepat:

tput reset

Dari jawaban lain:

  • Anda dapat mengatur Pintasan Keyboard ke resetterminal, seperti yang dijelaskan oleh towolf .

  • Jika Anda menjalankan Kubuntu , dan terminal Anda adalah Konsole, Anda harus pergi ke Edit → Clear history , karena resettidak berfungsi dengan cara yang sama di sana, seperti yang dicatat oleh UncleZeiv .

Stefano Palazzo
sumber
9
Mungkin tidak masalah bagi sebagian besar pengguna, tetapi perilaku resettergantung pada terminal.
cthom06
2
Secara pribadi saya tidak keberatan ada sesuatu yang tertinggal "di atas" sepanjang penggulung ketika saya menekan ^L. Saya tidak melihatnya (itu yang saya inginkan!), Saya tidak merasakannya, dan jika tiba-tiba saya perlu mengembalikan apa yang ada di sana - tidak ada masalah. resetSebaliknya alat yang jauh lebih sulit - saya akan menggunakannya ketika ada yang salah dengan terminal - seperti, ketika urutan melarikan diri yang aneh secara tidak sengaja merusak tampilan sama sekali.
ulidtko
14
@ulidtko: tidak masalah ketika Anda menjalankan sesi program berurutan dengan banyak hasil. Jika Anda menggulir ke belakang, mudah untuk bingung tentang eksekusi mana yang mencetak sesuatu. Saya tahu betul bahwa solusi yang lebih canggih dapat digunakan dalam kasus-kasus ini, namun demikian itu adalah skenario yang cukup sering terjadi dalam sesi debugging cepat & kotor.
UncleZeiv
7
Ada juga tput resetyang terlihat melakukan hal yang sama, tetapi selesai secara instan (padahal resetbisa memakan waktu sekitar 2 detik sebelum muncul kembali).
Ponkadoodle
1
Ini menyebabkan ukuran jendela putty.exe saya, lebih baik dihapus tanpa itu terjadi.
void.pointer
100

Saya mencari ini untuk sementara waktu dan saya menemukan beberapa jenius yang memposting ini:

clear && printf '\e[3J'

Menghapus seluruh penyangga layar, sangat bersih. Bekerja pada OS X dan yakin itu berfungsi dengan baik pada sebagian besar terminal * nix.

Bagi yang penasaran, bagian ini '\e[3J'adalah perintah pelarian terminal.

Goran
sumber
2
Hmm, bekerja di xterm, Konsole dan Linux VT, tetapi tidak di gnome-terminal ...
Ruslan
1
Terima kasih, bekerja sangat baik di Mac saya - Saya benar-benar merindukan gaya Bash yang sebenarnya reset.
JohnnyCoder
9
Terima kasih, itu sangat berguna! Apa printf '\e[3J'artinya Bagaimana cara membersihkan buffer?
Filip Spiridonov
4
hati-hati alias reset- itu tidak lebih dari membersihkan terminal. misalnya, jika Anda secara tidak sengaja mencetak file biner dengan sampah acak yang merusak terminal (misalnya, menonaktifkan gema karakter yang diketik), resetbiasanya dapat memperbaikinya. tentu saja aliasing baik-baik saja selama Anda tahu cara melakukan \overrideperintah alias-shadowed.
RubyTuesdayDONO
4
Ini adalah satu-satunya jawaban yang berfungsi untuk menghapus Putty scrollback ketika mengakses beberapa SSH via Winders.
dhaupin
45

Anda juga dapat menetapkan pintasan di gnome-terminal dengan masuk ke Edit → Pintasan Keyboard . Saya menggunakan Shift+ Ctrl+ Alt+ C.

atur ulang dan hapus pintasan

towolf
sumber
+1. Saya selalu menyembunyikan Menubar; bahkan setelah bertahun-tahun menggunakan gnome, saya tidak pernah berpikir untuk mencari ini. Terima kasih :-)
Stefano Palazzo
3
"Reset" tidak melakukan apa pun untuk saya, dan "Reset dan Hapus" menghapus semuanya tetapi tidak menampilkan kembali prompt. Tidak ada entri menu ini yang berperilaku seperti perintah "reset" dari terminal.
Hibou57
Seperti yang dikatakan @ Hibou57, pintasan keyboard saya untuk "Reset" sepertinya tidak melakukan apa-apa. Apakah fungsi ini rusak di 14,04?
Michael Martin-Smucker
"Apakah fungsi ini rusak di 14,04?": Ini sama dengan 12,04.
Hibou57
1
@ Hibou57 "Reset dan Hapus" tidak diharapkan untuk menampilkan kembali prompt, tetapi jika Anda menekan Enter setelah itu akan menampilkan kembali prompt. Apakah itu berhasil untuk Anda?
Don Hatch
19

Posting silang jawaban saya dari stackoverflow .

Gunakan perintah berikut untuk melakukan layar yang jelas alih-alih hanya menambahkan baris baru ...

printf "\033c"

ya itu 'printf' di bash prompt.

Anda mungkin ingin mendefinisikan alias ...

alias cls='printf "\033c"'

Penjelasan

\033 == \x1B == 27 == ESC

Jadi ini menjadi <ESC>ckode pelarian VT100 untuk mengatur ulang terminal. Berikut ini beberapa informasi lebih lanjut tentang kode pelarian terminal.

Sunting

Berikut adalah beberapa cara lain untuk melakukannya ...

printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e    Enable interpretation of of backslash escapes
# -n    Do not output a new line

KDE

Hal di atas tidak berfungsi pada konsol KDE (disebut Konsole) tetapi ada harapan! Gunakan urutan perintah berikut untuk menghapus layar dan buffer scroll-back ...

clear && echo -en "\e[3J"

Atau mungkin menggunakan alias berikut di KDE ...

alias cls='clear && echo -en "\e[3J"'

Saya mendapat perintah pembersihan scroll-back dari sini .

Otodidak
sumber
18

jalankan perintah ini:

reset

Ini memiliki efek yang sama dengan meluncurkan terminal baru.

dv3500ea
sumber
6
Saat menggunakan dempul, setelah berlari reset, saya masih bisa menggulir ke atas dan melihat barang-barang sebelumnya. Apakah ini masalah dengan Putty daripada reset?
Svish
@vish - itu hanya masalah implementasi putty atau keputusan.
belacqua
@ jgbelacqua, Deal :)
Svish
Bekerja dengan Terminal MAC OS
Bira
2
@Bira Tidak, resettidak menghapus scrollback pada macOS 10.14 Mojave. Anda dapat mencoba seq 100; resetmelihat scrollback masih di sana. Di terminal macOS, Cmd+Kdapat menghapus layar dan scrollback.
Johnny Wong
8

Favorit saya adalah printf "\ec". Ini juga bisa printf "\033c"atau printf "\x1bc". Itu adalah urutan pelarian ansi yang secara ajaib membersihkan layar dan buffer untuk output terminal (untuk sebagian besar terminal standar saya telah bekerja di dalamnya - saya tahu itu berfungsi seperti gnome-terminal, terminator, xterm, dll di Ubuntu-like) Linux)

Saya tahu ini bekerja di Linux Mint dan Ubuntu 14.04, jadi saya tidak tahu mengapa orang-orang menambahkan dan menyiapkan hal-hal seperti clear && echo -ne "\033c. printf "\ec"selalu bekerja untuk saya.

Selain itu, di saya, .bashrcsaya memiliki ikatan seperti ini:

bind -x '"\C-t": printf "\ec"';

Sekarang saya menekan ctrltsepanjang waktu.

dylnmc
sumber
Apakah Anda tahu bagaimana pemetaan dapat dibuat menggunakan kunci Windows? Cuplikan ini sangat hebat, bekerja persis seperti Command-K di mac. Terima kasih.
Niloct
@Nococt Anda dapat melihat apakah terminal mendukungnya xev(cukup ketik xevterminal di dalam sesi x). Dari apa yang saya tahu, urxvt tidak mendukungnya; sementara saya tidak mencoba dalam jumlah besar, saya yakin itu tidak akan didukung. Saya juga ragu xterm atau terminal gnome akan mendukung ini. Ini rumit dengan ansi-lolos. Ceria dan maaf atas keterlambatan balasan.
dylnmc
Baiklah @dnmnmc, saya menghargainya. Terima kasih atas komentarnya.
Niloct
5

Yah itu sangat tergantung, jika Anda menggunakan Konsolemisalnya bahkan resettidak mencegah Anda untuk menggulir melewati baris pertama. Dalam hal ini Anda harus menggunakan beberapa fitur dari terminal tertentu yang Anda gunakan. Untuk Konsoleitu Edit > Clear History.

UncleZeiv
sumber
3

Saya telah menemukan yang berikut ini cukup sukses dengan Kubuntu:

alias clc="echo -en '\033c\033[3J'"

Anda dapat menggunakan clssesuai dengan tradisi Windows, menggunakan versi Matlab clc, atau salah satu dari Anda sendiri. Semoga berhasil!

Charles Bell
sumber
2

Alternatif lain untuk jawaban @ Hibou57:

# The Octal Way
alias clear="echo -e '\033c\c'"

ATAU

# The Hex Way
alias clear="echo -e '\x1b\c'"

Pada dasarnya ini akan memiliki efek yang persis sama, itu akan mencetak ^[karakter (yang menghapus terminal Anda) dan tidak menampilkan baris baru yang tertinggal.

TwystO
sumber
Sedikit koreksi: itu mencetak ^[karakter (ESC) diikuti oleh para ckarakter, bukan hanya ^[karakter saja. Gabungan, jumlah ini ke kode terminal "RIS", yang menyebabkan reset. Info lebih lanjut: xfree86.org/4.8.0/ctlseqs.html
jwd