Ответы:
ctrl+ Lпросто очистить экран терминала.
Это сочетание клавиш, эквивалентное команде clear -x
. ссылка
Это свойство bash
, так что вы не нашли его под сочетаниями клавиш в вашем gnome-терминале. От 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.
Смотрите подробный список сочетаний клавиш Bash .
clear
, потому что она не стирает вашу историю терминала, в то время как команда clear
делает, если вы не добавите -x
аргумент, так как: clear -x
.
Если используемая вами оболочка не перехватывает ее, вы вводите символ «Форм подачи» в своем терминале. Если приложение терминала не перехватывает или не использует какое-либо нажатие клавиши, Ctrl+ Letter переводится в код ASCII буквы минус 64 (1). 65 - это ASCII-код «A», «L» - 12-я буква -> код 76. Если оболочка не знает, что делать с кодом, она печатает его.
Печать FF-символа привела к появлению новой страницы на линейном принтере и чистому экрану на терминале (да, тогда я использовал VT-52 со скоростью 300 бод).
Так что Ctrl+ L12, что FF. Точно так же Ctrl+ I- это TAB, и Ctrl+ Gзвонит в колокол ---, если терминал или оболочка не перехватывает его, как, например, Ctrl+ C.
Обратите внимание , с другой ответ: кажется , что Баш делать перехват CTRL- Lи делать clear
. Приятно отметить, что bash
авторы связали ключ с командой, которая будет делать более или менее то же самое, что код ASCII делал на старых терминалах!
С другой стороны, в моем zsh
сочетании CTRL- Iработает как TABи CTRL- Hкак Backspace(2).
Старый хороший ASCII ... (обратите внимание, что буква L находится в столбце 4, строке 12, она имеет код ASCII 4 * 16 + 12 = 76).
Исходное изображение здесь , из статьи в Википедии об ASCII .
(1) Ctrlдействительно используется, чтобы очистить бит 7.
(2) это источник шутки «не удаётся удалить слово», которую вы когда-нибудь находите, например, «это была плохая ^ H ^ H ^ не такая хорошая идея» ... (обычно слово сильнее, чем плохое!)
^H
s или ^W
s удобна, когда вы не можете использовать зачеркивания. :)
Control-L
перехвачен и интерпретируется Баш ( на самом деле с помощью в readline
библиотеке , которая обрабатывает интерактивное редактирование в командной строке). Это связано с clear-screen
функцией, как писал @souravc.
Обратите внимание на значение Control-L
: он определен как подача формы в таблице символов ASCII, но это ничего не значит, если какая-то программа не интерпретирует его соответствующим образом. Терминал не очищает экран, когда видит канал формы, что можно проверить, сохранив ^ L в файле и напечатав его с помощью cat
. Когда bash/readline
видит ^L
, он выполняет clear-screen
функцию. Это отправляет последовательность символов, понятную вашему эмулятору терминала (как описано в termcap или terminfo), и дает эффект очистки экрана.
В очень старых принтерах, a ^L
продвигает бумагу, начинающую печатать на следующем листе, отсюда и название «подача формы». Но современные терминалы и эмуляторы терминалов следуют более новому стандарту ANSI, в котором управляющими командами являются многосимвольные «escape-коды», которые начинаются с ^[
(escape). Когда bash видит вас ^L
, он, вероятно, отправляет последовательность из двух команд ESC [ H ESC [ J
, которая перемещается в верхний левый угол экрана и очищает все, что находится под ним (отсюда и весь экран).
ESC [ ESC [ J
также очищает историю команд, а CTRL + L
последовательность - нет. Последовательность отсылаются терминалу скорее ESC [ H ESC [ 2 J
, идти вперед попробуйте сами с этой командой: printf "\033[H\033[2J"
.
Как все уже хорошо объяснили, что такое Ctrl+ Lи что делает, но никто не объяснил, как «отменить» команду, вот несколько команд, которые вы можете набрать, чтобы вернуть вас к тому, что вы делали:
history
даст вам последние 20 команд, которые вы ввели.
tail --lines=20 /var/log/dpkg.log
даст вам последние 20 строк вывода любой установки пакета, которую вы выполняли