Ctrl + L trong thiết bị đầu cuối


41

Tôi đã vô tình gõ ctrl+ Ltrong thiết bị đầu cuối và cửa sổ thiết bị đầu cuối của tôi đã nhảy một kích thước 'màn hình'. Tôi đã xem các phím tắt trong "Chỉnh sửa" -> "Phím tắt" và không tìm thấy phím tắt đó.

ctrl+ Llàm và nơi là nó được xác định?

Câu trả lời:


58

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 .


Ồ, điều đó giải thích nó.
Parto

3
Nó không chỉ là bash mặc dù; Ctrl-L là ký tự nguồn cấp dữ liệu. Nó không quá phổ biến, nhưng đôi khi bạn sẽ thấy ^ L trong mã nguồn phân tách "trang" mã. Nó có ý nghĩa hơn khi một máy in sẽ giải thích nó như là một nhân vật điều khiển.
Joshua Taylor

@JoshuaTaylor bạn đúng. Bài viết wiki liên quan về Trang break
souravc

1
^ L là ký tự nguồn cấp dữ liệu trong bảng ascii, nhưng điều đó không làm gì cả trừ khi chương trình xử lý nó phù hợp (bash hoặc trình giả lập thiết bị đầu cuối, trong ngữ cảnh này).
alexis

1
Lưu ý rằng nó không tương đương với lệnh mặc định clear, vì nó không xóa lịch sử đầu cuối của bạn, trong khi lệnh clearthực hiện, trừ khi bạn thêm -xđối số, như vậy : clear -x.
jirislav

18

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 bashtá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 zshsự kết hợp của tôi CTRL- Ihoạt động như TABCTRL- 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).

Hình ảnh từ Wikimedia commons

Ảnh gốc ở đây , từ bài viết trên wikipedia về ASCII .


Chú thích:

(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ệ


1
Đẹp. Làm thế nào để tôi sử dụng biểu đồ này bằng cách này? Tôi có thể thấy chữ L ở hàng 12 và cột 4. Sau đó tôi chỉ trừ 32 từ số 124 hay bạn tính mã ASCII như thế nào?
Parto

@AvatarParto up, đã viết 32 thay vì 65. Trả lời đúng. Bảng là nhị phân, vì vậy mã là cột * 16 + hàng.
Rmano

1
Chèn chữ ^Hhoặc ^Ws là tốt khi bạn không thể sử dụng gạch ngang. :)
Blacklight Shining

8

Control-Lbị chặn và giải thích bởi bash (trên thực tế bởi các readlinethư 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-screenchứ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/readlinethấy ^L, nó thực thi clear-screenchứ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ũ, ^Lsẽ 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).


Trên thực tế, trình tự ESC [ ESC [ Jcũ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".
jirislav

0

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

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.