Câu trả lời:
ctrl+ Lchỉ cần xóa màn hình thiết bị đầu cuối.
Đây là phím tắt tương đương với lệnh clear -x
. tham chiếu
Nó là tài sản của bash
, vì vậy bạn không tìm thấy nó dưới các phím tắt trong thiết bị đầu cuối gnome của bạn. Từ man bash
:
clear-screen (C-l)
Clear the screen leaving the current line at the top of the
screen. With an argument, refresh the current line without
clearing the screen.
Xem danh sách chi tiết về Phím tắt Bash .
clear
, vì nó không xóa lịch sử đầu cuối của bạn, trong khi lệnh clear
thực hiện, trừ khi bạn thêm -x
đối số, như vậy : clear -x
.
Nếu lớp vỏ bạn đang sử dụng không chặn nó, bạn đang gõ một ký tự "Form-feed" trong thiết bị đầu cuối của mình. Nếu ứng dụng đầu cuối không chặn hoặc sử dụng tổ hợp phím theo một cách nào đó, Ctrl+ Letter được dịch sang mã ASCII của chữ cái trừ 64 (1). 65 là mã ASCII của 'A', 'L' là chữ cái thứ 12 -> mã 76. Nếu trình bao không biết phải làm gì với mã, nó sẽ in nó.
In một char FF dẫn đến một trang mới trên máy in dòng và màn hình rõ ràng trên thiết bị đầu cuối (vâng, tôi đã sử dụng VT-52 hồi đó, ở tốc độ 300 baud).
Vậy Ctrl+ Llà 12 là FF. Theo cùng một cách, Ctrl+ Ilà một TAB và Ctrl+ Grung chuông --- nếu thiết bị đầu cuối hoặc vỏ không chặn nó, như Ctrl+ Cchẳng hạn.
Thông báo từ câu trả lời khác: có vẻ như bash làm đánh chặn CTRL- Lvà làm một clear
. Thật tuyệt khi các bash
tác giả đã liên kết khóa với một lệnh sẽ thực hiện ít nhiều giống như mã ASCII đã làm trên các thiết bị đầu cuối cũ!
Mặt khác, trong zsh
sự kết hợp của tôi CTRL- Ihoạt động như TABvà CTRL- Hnhư một Backspace(2).
ASCII cũ đẹp ... (lưu ý rằng chữ L nằm ở cột 4, hàng 12, nó có mã ASCII 4 * 16 + 12 = 76).
Ảnh gốc ở đây , từ bài viết trên wikipedia về ASCII .
(1) Ctrlthực sự được sử dụng để xóa bit 7.
(2) đây là nguồn gốc của trò đùa "thất bại trong việc loại bỏ từ" đôi khi bạn thấy giống như "đây là một điều tồi tệ
^H
hoặc ^W
s là tốt khi bạn không thể sử dụng gạch ngang. :)
Control-L
bị chặn và giải thích bởi bash (trên thực tế bởi các readline
thư viện , mà xử lý biên tập tương tác trên dòng lệnh). Nó bị ràng buộc với clear-screen
chức năng, như @souravc đã viết.
Lưu ý về ý nghĩa của Control-L
: Nó được định nghĩa là Nguồn cấp biểu mẫu trong bảng ký tự ASCII, nhưng điều này có nghĩa là không có gì trừ khi một số chương trình diễn giải nó theo đó. Thiết bị đầu cuối không xóa màn hình khi thấy nguồn cấp dữ liệu biểu mẫu, vì bạn có thể xác minh bằng cách lưu ^ L trong tệp và in tệp với cat
. Khi bash/readline
thấy ^L
, nó thực thi clear-screen
chức năng. Điều này sẽ gửi một chuỗi các ký tự được trình giả lập thiết bị đầu cuối của bạn hiểu (như được mô tả bởi termcap hoặc terminfo) và có tác dụng xóa màn hình.
Trong các máy in rất cũ, ^L
sẽ tiến hành in giấy bắt đầu trên tờ tiếp theo, do đó có tên là "mẫu thức ăn". Nhưng các thiết bị đầu cuối hiện đại và trình giả lập thiết bị đầu cuối tuân theo một tiêu chuẩn ANSI mới hơn, trong đó các lệnh điều khiển là "mã thoát" đa ký tự bắt đầu bằng ^[
(thoát). Khi bash nhìn thấy bạn ^L
, có lẽ nó đang gửi chuỗi hai lệnh ESC [ H ESC [ J
, di chuyển sang phía trên bên trái của màn hình và xóa mọi thứ bên dưới nó (do đó là toàn bộ màn hình).
ESC [ ESC [ J
cũng xóa lịch sử lệnh, trong khi CTRL + L
trình tự không. Trình tự được gửi đến thiết bị đầu cuối là đúng hơn ESC [ H ESC [ 2 J
, hãy tiếp tục thử bản thân với lệnh này : printf "\033[H\033[2J"
.
Như mọi người đã giải thích khá rõ những gì Ctrl+ Llà và làm, nhưng không ai giải thích cách "đảo ngược" lệnh, đây là một vài lệnh bạn có thể nhập để đưa bạn trở lại với những gì bạn đang làm:
history
sẽ cung cấp cho bạn 20 lệnh cuối cùng bạn đã nhập.
tail --lines=20 /var/log/dpkg.log
sẽ cung cấp cho bạn 20 dòng đầu ra cuối cùng của bất kỳ cài đặt gói nào bạn đang thực hiện