Làm thế nào để thực sự xóa thiết bị đầu cuối?


385

Tôi có thể ban hành clearlệnh hoặc nhấn Ctrl+ Lđể xóa các thiết bị đầu cuối Ubuntu hiện nay, nhưng điều này chỉ cần thay đổi lên sản lượng trước đó và nếu bạn sử dụng nút cuộn chuột hoặc PgUPPgDownphím thật khó để phân biệt đâu là đầu ra của lệnh trước đó kết thúc và đầu ra của lệnh hiện hành bắt đầu.

Có cách nào để thực sự xóa thiết bị đầu cuối để tôi không thấy kết quả lệnh trước đó không?


11
Nhấn Ctrl + L hai lần và bạn sẽ trống!
Pandya

Câu trả lời:


456

Vâng, lệnh bạn đang tìm kiếm là

reset

Ngược lại clear, hoặc Ctrl+ L, resetsẽ thực sự khởi tạo lại hoàn toàn thiết bị đầu cuối , thay vì chỉ xóa màn hình. Tuy nhiên, nó sẽ không khởi tạo lại shell (bash). Điều đó có nghĩa là trạng thái của bash vẫn giống như trước đây, giống như bạn chỉ đang xóa màn hình.

Như @Wallacoloo đề cập trong các bình luận, lệnh này sẽ thực hiện điều tương tự nhanh hơn:

tput reset

Từ các câu trả lời khác:

  • Bạn có thể đặt Phím tắt cho resetthiết bị đầu cuối, như được giải thích bởi Towolf .

  • Nếu bạn đang chạy Kubfox và thiết bị đầu cuối của bạn là Konsole, bạn cần vào Chỉnh sửa → Xóa lịch sử , vì resetkhông hoạt động theo cách tương tự ở đó, như chúZeiv lưu ý .


9
Có lẽ không quan trọng đối với hầu hết người dùng, nhưng hành vi của resetphụ thuộc vào thiết bị đầu cuối.
cthom06

2
Cá nhân tôi không bận tâm rằng một cái gì đó bị bỏ lại "lên" dọc theo thanh cuộn khi tôi đánh ^L. Tôi không thấy nó (đó là những gì tôi muốn!), Tôi không cảm thấy điều đó, và nếu đột nhiên tôi sẽ cần khôi phục lại những gì đã có - không có vấn đề gì. resetngược lại là công cụ khó hơn nhiều - tôi sẽ sử dụng nó khi có sự cố xảy ra với thiết bị đầu cuối - giống như, khi các chuỗi thoát kỳ lạ vô tình làm hỏng màn hình hoàn toàn.
ulidtko

14
@ulidtko: không thành vấn đề khi bạn chạy các phiên chương trình liên tiếp với hàng tấn đầu ra. Nếu bạn cuộn lại, bạn sẽ dễ bị nhầm lẫn về việc thực thi nào được in. Tôi biết rất rõ rằng các giải pháp tinh vi hơn có thể được sử dụng trong những trường hợp này, nhưng dù sao đó cũng là một kịch bản xuất hiện khá thường xuyên trong các phiên gỡ lỗi nhanh & bẩn.
ChúZeiv

7
Cũng có tput resetnhững thứ rõ ràng làm điều tương tự, nhưng hoàn thành ngay lập tức (trong khi resetcó thể mất đến khoảng 2 giây trước khi dấu nhắc xuất hiện lại).
Ponkadoodle

1
Điều này làm cho cửa sổ putty.exe của tôi thay đổi kích thước, sẽ rất tốt để xóa mà không xảy ra.
void.pulum

100

Tôi đã tìm kiếm điều này trong một thời gian và tôi đã tìm thấy một số thiên tài đã đăng điều này:

clear && printf '\e[3J'

Xóa toàn bộ bộ đệm màn hình, rất sạch sẽ. Hoạt động trên OS X và tin rằng nó hoạt động tốt trên hầu hết các thiết bị đầu cuối * nix.

Đối với tò mò, phần '\e[3J'này là một lệnh thoát thiết bị đầu cuối.


2
Hmm, hoạt động trong xterm, Konsole và Linux VT, nhưng không hoạt động trong gnome-terminal ...
Ruslan

1
Cảm ơn, hoạt động rất tốt trên máy Mac của tôi - Tôi thực sự đã bỏ lỡ một phong cách Bash thực sự reset.
JohnnyCoder

9
Cảm ơn, điều đó siêu hữu ích! Có printf '\e[3J'nghĩa là gì? Làm thế nào để nó làm sạch bộ đệm?
Filip Spiridonov

4
cẩn thận răng cưa reset- nó không chỉ xóa thiết bị đầu cuối. ví dụ: nếu bạn vô tình in một tệp nhị phân với rác ngẫu nhiên làm hỏng thiết bị đầu cuối (ví dụ: vô hiệu hóa tiếng vang của các ký tự đã nhập), resetthường có thể khắc phục điều đó. tất nhiên bí danh là tốt miễn là bạn biết làm thế nào để \overridemột lệnh bí danh.
RubyTuesdayDONO

4
Đây là câu trả lời duy nhất hoạt động để xóa cuộn ngược Putty khi truy cập một số SSH thông qua Winders.
dhaupin

45

Bạn cũng có thể chỉ định một phím tắt trong gnome-terminal bằng cách vào Chỉnh sửa → Phím tắt . Tôi sử dụng Shift+ Ctrl+ Alt+ C.

thiết lập lại và xóa phím tắt


+1. Tôi luôn giấu Menubar; Vì vậy, ngay cả sau nhiều năm và sử dụng gnome, tôi không bao giờ nghĩ sẽ tìm kiếm điều này. Cảm ơn :-)
Stefano Palazzo

3
Thiết lập lại các ứng dụng không thể làm gì được cho tôi Không có mục nào trong số các mục này hoạt động giống như lệnh Đặt lại cài đặt từ một thiết bị đầu cuối.
Hibou57

Như @ Hibou57 đã nói, phím tắt "Đặt lại" của tôi dường như không làm gì cả. Là chức năng này bị hỏng trong 14.04?
Michael Martin-Smucker

Chức năng này có bị hỏng trong 14.04 không? VÒNG: điều này giống với 12.04.
Hibou57

1
@ Hibou57 "Đặt lại và xóa" không mong muốn hiển thị lại lời nhắc, nhưng nếu bạn nhấn Enter sau đó, nó sẽ hiển thị lại lời nhắc. Điều đó có làm việc cho bạn?
Don nở

19

Đăng chéo câu trả lời của tôi từ stackoverflow .

Sử dụng lệnh sau để thực hiện một màn hình rõ ràng thay vì chỉ thêm các dòng mới ...

printf "\033c"

vâng, đó là một 'printf' trên dấu nhắc bash.

Bạn có thể sẽ muốn xác định một bí danh mặc dù ...

alias cls='printf "\033c"'

Giải trình

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

Vì vậy, đây <ESC>clà mã thoát VT100 để đặt lại thiết bị đầu cuối. Dưới đây là một số thông tin về mã thoát thiết bị đầu cuối.

Biên tập

Dưới đây là một vài cách khác để làm điều đó ...

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

Ở trên không hoạt động trên bảng điều khiển KDE (được gọi là Konsole) nhưng có hy vọng! Sử dụng chuỗi lệnh sau để xóa màn hình và bộ đệm cuộn lại ...

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

Hoặc có thể sử dụng bí danh sau trên KDE ...

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

Tôi đã nhận được lệnh xóa cuộn lại từ đây .


18

chạy lệnh này:

reset

Điều này có tác dụng tương tự như khởi chạy một thiết bị đầu cuối mới.


6
Khi sử dụng putty, sau khi chạy reset, tôi vẫn có thể cuộn lên và xem nội dung trước đó. Đây có phải là một vấn đề với PuTTY chứ không phải reset?
Svish

@svish - đó chỉ là một vấn đề hoặc quyết định thực hiện putty.
belacqua

@jgbelacqua, Thỏa thuận :)
Svish

Làm việc với MAC OS Terminal
Bira

2
@Bira Không, resetkhông xóa cuộn lại trên macOS 10.14 Mojave. Bạn có thể thử seq 100; resetxem cuộn lại vẫn ở đó. Trên thiết bị đầu cuối macOS, Cmd+Kcó thể xóa màn hình và cuộn lại.
Johnny Wong

8

Yêu thích của tôi là printf "\ec". Điều này cũng có thể printf "\033c"hoặc printf "\x1bc". Đó là một chuỗi thoát ansi giúp xóa màn hình và bộ đệm cho đầu ra thiết bị đầu cuối một cách kỳ diệu (đối với hầu hết các thiết bị đầu cuối tiêu chuẩn mà tôi đã làm việc trong đó - tôi biết nó hoạt động như gnome-terminal, terminator, xterm, v.v. Linux)

Tôi biết điều này hoạt động trong Linux Mint và Ubuntu 14.04, vì vậy tôi không biết tại sao mọi người lại nối thêm và chuẩn bị những thứ như thế clear && echo -ne "\033c. printf "\ec"đã luôn làm việc cho tôi.

Ngoài ra, trong tôi .bashrccó một ràng buộc như thế này:

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

Bây giờ tôi nhấn ctrlttất cả các thời gian.


Bạn có biết làm thế nào một ánh xạ có thể được tạo bằng phím Windows không? Đoạn mã này thực sự tuyệt vời, hoạt động chính xác như Command-K trên mac. Cảm ơn bạn.
Niloct

@Niloct bạn có thể xem thiết bị đầu cuối có hỗ trợ hay không xev(chỉ cần nhập xevthiết bị đầu cuối bên trong phiên x). Từ những gì tôi có thể nói, urxvt không hỗ trợ nó; Mặc dù tôi đã không thử trong một tty, tôi tự tin rằng nó sẽ không được hỗ trợ. Tôi cũng nghi ngờ xterm hoặc gnome-terminal sẽ hỗ trợ điều này. Đó là khó khăn với ansi-thoát. Chúc mừng và xin lỗi vì trả lời muộn.
dylnmc

Được rồi @dylnmc, tôi đánh giá cao nó. Cảm ơn các bình luận.
Niloct

5

Chà, điều đó thực sự phụ thuộc, nếu bạn đang sử dụng, Konsolethậm chí resetkhông ngăn bạn cuộn qua dòng đầu tiên. Trong trường hợp đó, bạn phải sử dụng một số tính năng của thiết bị đầu cuối cụ thể mà bạn đang sử dụng. Vì Konsole, đó là Edit > Clear History.


3

Tôi đã tìm thấy những điều sau đây khá thành công với Kubfox:

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

Bạn có thể sử dụng clsđể tuân theo truyền thống Windows, sử dụng phiên bản Matlab clchoặc một trong những phiên bản của riêng bạn. Chúc may mắn!



2

Một cách khác để trả lời @ Hibou57:

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

HOẶC LÀ

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

Về cơ bản, điều này sẽ có hiệu ứng chính xác tương tự, nó sẽ in ^[ký tự (xóa thiết bị đầu cuối của bạn) và không xuất ra dòng mới.


Điều chỉnh nhẹ: nó in các ^[ký tự (ESC) sau đó các cnhân vật, không chỉ là ^[nhân vật một mình. Kết hợp lại, số tiền này cho mã đầu cuối "RIS", gây ra thiết lập lại. Thông tin thêm: xfree86.org/4.8.0/ctlseqs.html
jwd

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.