Saya tidak sengaja mengetik ctrl+ Ldi terminal dan jendela terminal saya melonjak satu ukuran 'penuh layar'. Saya melihat pintasan keyboard di "Edit" -> "Pintasan keyboard" dan tidak menemukan pintasan itu.
Apa yang dilakukan ctrl+ Ldan di mana + itu didefinisikan?
command-line
shortcut-keys
Parto
sumber
sumber
clear
, karena tidak menghapus sejarah terminal Anda, sementara perintahclear
tidak, kecuali jika Anda menambahkan-x
argumen, seperti:clear -x
.Jika shell yang Anda gunakan tidak mencegatnya, Anda mengetik karakter "Form-feed" di terminal Anda. Jika aplikasi terminal tidak mencegat atau menggunakan penekanan tombol dalam beberapa cara, Ctrl+ Surat diterjemahkan ke kode ASCII dari huruf minus 64 (1). 65 adalah kode ASCII 'A', 'L' adalah huruf 12 -> kode 76. Jika shell tidak tahu apa yang harus dilakukan dari kode, ia mencetaknya.
Mencetak char FF menghasilkan halaman baru pada printer garis dan layar yang jelas pada terminal (ya, saya menggunakan VT-52 saat itu, pada 300 baud).
Jadi Ctrl+ Ladalah 12 yang merupakan FF. Dengan cara yang sama, Ctrl+ Iadalah TAB, dan Ctrl+ Gmembunyikan bel --- jika terminal atau shell tidak mencegatnya, seperti Ctrl+ Cmisalnya.
Perhatikan dari jawaban yang lain: tampaknya bash melakukan intersepsi CTRL- Ldan melakukan a
clear
. Sentuhan yang bagus bahwabash
penulis menghubungkan kunci dengan perintah yang akan melakukan kurang lebih sama dengan yang dilakukan kode ASCII pada terminal lama!Di sisi lain, dalam
zsh
kombinasi saya CTRL- Iberfungsi sebagai TABdan CTRL- Hsebagai Backspace(2).ASCII bagus yang lama ... (perhatikan bahwa huruf L ada di kolom 4, baris 12, memiliki kode ASCII 4 * 16 + 12 = 76).
Gambar asli di sini , dari artikel wikipedia di ASCII .
Catatan kaki:
(1) Ctrlbenar-benar digunakan untuk menghapus bit 7.
(2) ini adalah sumber dari "gagal menghapus kata" bercanda Anda kadang-kadang menemukan seperti misalnya "ini adalah buruk ^ H ^ H ^ Tidak begitu ide bagus" ... (dengan biasanya kata lebih kuat dari buruk!)
sumber
^H
s atau^W
s adalah hal yang baik ketika Anda tidak dapat menggunakan coret. :)Control-L
dicegat dan ditafsirkan oleh bash (sebenarnya oleh parareadline
library , yang menangani editing interaktif pada baris perintah). Ini terikat padaclear-screen
fungsi, seperti yang ditulis oleh @souravc.Catatan tentang arti
Control-L
: Ini didefinisikan sebagai Umpan Bentuk dalam tabel karakter ASCII, tetapi ini tidak berarti apa-apa kecuali beberapa program menafsirkannya sesuai. Terminal tidak menghapus layar ketika melihat umpan formulir, karena Anda dapat memverifikasi dengan menyimpan ^ L dalam file dan mencetak file dengancat
. Saatbash/readline
melihatnya^L
, ia menjalankanclear-screen
fungsinya. Ini mengirimkan urutan karakter yang dipahami oleh emulator terminal Anda (seperti yang dijelaskan oleh termcap atau terminfo), dan memiliki efek membersihkan layar.Pada printer yang sangat lama, a
^L
akan memajukan kertas mulai mencetak pada lembar berikutnya, maka nama "form feed". Tetapi terminal modern dan emulator terminal mengikuti standar ANSI yang lebih baru, di mana perintah kontrol adalah "kode pelarian" multi-karakter yang dimulai dengan^[
(escape). Ketika bash melihat Anda^L
, mungkin mengirimkan urutan dua perintahESC [ H ESC [ J
, yang bergerak ke kiri atas layar dan menghapus semua yang ada di bawahnya (maka seluruh layar).sumber
ESC [ ESC [ J
juga membersihkan sejarah perintah, sedangkanCTRL + L
urutan tidak. Urutan dikirim ke terminal agakESC [ H ESC [ 2 J
, pergi ke depan sebuah mencobanya sendiri dengan perintah ini:printf "\033[H\033[2J"
.Karena semua orang sudah menjelaskan dengan baik apa Ctrl+ Litu dan apa yang dilakukan, tetapi tidak ada yang menjelaskan cara "membalikkan" perintah, berikut beberapa perintah yang bisa Anda ketik untuk mengembalikan Anda ke apa yang Anda lakukan:
akan memberi Anda 20 perintah terakhir yang Anda ketikkan.
akan memberi Anda 20 baris terakhir output dari setiap instalasi paket yang Anda lakukan
sumber