Odpowiedzi:
ctrl+ Lpo prostu wyczyść ekran terminala.
Jest to odpowiednik skrótu klawiaturowego polecenia clear -x
. ref
Jest własnością bash
, więc nie znalazłeś go pod skrótami klawiaturowymi w swoim terminalu gnome. Od 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.
Zobacz szczegółową listę skrótów klawiaturowych Bash .
clear
, ponieważ nie wymazać historię terminala, natomiast komenda clear
robi, chyba że dodasz -x
argumentu, tak: clear -x
.
Jeśli używana powłoka nie przechwytuje jej, wpisujesz w terminalu znak „Form-feed”. Jeśli aplikacja terminalowa nie przechwytuje ani nie używa w jakiś sposób naciśnięcia klawisza, Ctrllitera + jest tłumaczona na kod ASCII litery minus 64 (1). 65 to kod ASCII „A”, „L” to 12. litera -> kod 76. Jeśli powłoka nie wie, co zrobić z kodem, drukuje go.
Wydrukowanie znaku FF zaowocowało nową stroną na drukarce liniowej i wyraźnym ekranem na terminalu (tak, wtedy użyłem VT-52 , przy 300 bodach).
Więc Ctrl+ Lwynosi 12, czyli FF. W ten sam sposób, Ctrl+ Ijest TAB, a Ctrl+ Gdzwoni dzwonkiem --- jeśli terminal lub powłoka go nie przechwytuje, jak na przykład Ctrl+ C.
Wskazówki od drugiej odpowiedzi: wydaje się, że bash zrobić przechwycić CTRL- Li zrobić clear
. Miły akcent, że bash
autorzy skojarzyli klawisz z poleceniem, które zrobi mniej więcej tyle samo, co kod ASCII na starych terminalach!
Z drugiej strony, w mojej zsh
kombinacji CTRL- Idziała jako TABi CTRL- Hjako Backspace(2).
Stary ładny ASCII ... (zauważ, że litera L znajduje się w kolumnie 4, wiersz 12, ma kod ASCII 4 * 16 + 12 = 76).
Oryginalny obraz tutaj , z artykułu w Wikipedii na temat ASCII .
(1) Ctrlnaprawdę używany do wyczyszczenia bitu 7.
(2) to jest źródło żartu „nieusunięcia słowa”, który kiedyś można znaleźć, np. „To był zły ^ H ^ H ^ Nie taki fajny pomysł” ... (zwykle słowo mocniejsze niż złe!)
^H
i ^W
liter jest przydatne, gdy nie można użyć przekreślenia. :)
Control-L
jest przechwytywany i interpretowany przez bash (faktycznie od tej readline
biblioteki , która obsługuje interaktywne edycji w wierszu poleceń). Jest związany z clear-screen
funkcją, jak napisał @souravc.
Uwaga na temat znaczenia Control-L
: Jest zdefiniowana jako Form Feed w tabeli znaków ASCII, ale to nic nie znaczy, chyba że jakiś program odpowiednio ją interpretuje. Terminal nie czyści ekranu, gdy widzi wysuw formularza, co można zweryfikować, zapisując ^ L w pliku i drukując plik za pomocą cat
. Kiedy bash/readline
zobaczy ^L
, wykonuje clear-screen
funkcję. To wysyła sekwencję znaków zrozumiałą dla emulatora terminala (zgodnie z opisem termcap lub terminfo) i powoduje wyczyszczenie ekranu.
W bardzo starych drukarkach a ^L
przesuwa papier na następny arkusz, stąd nazwa „form feed”. Ale nowoczesne terminale i emulatory terminali są zgodne z nowszym standardem ANSI, w którym polecenia sterujące są wieloznakowymi „kodami ucieczki”, które zaczynają się od ^[
(escape). Kiedy bash cię widzi ^L
, prawdopodobnie wysyła sekwencję dwóch poleceń ESC [ H ESC [ J
, która przesuwa się w lewy górny róg ekranu i czyści wszystko pod nim (stąd cały ekran).
ESC [ ESC [ J
usuwa również historię poleceń, podczas gdy CTRL + L
sekwencja nie. Sekwencja wysyłane do terminala jest raczej ESC [ H ESC [ 2 J
śmiało próbować sobie z tym poleceniem: printf "\033[H\033[2J"
.
Ponieważ wszyscy już dość dobrze wyjaśnili, co Ctrl+ Ljest i robi, ale nikt nie wyjaśnił, jak „odwrócić” polecenie, oto kilka poleceń, które możesz wpisać, aby wrócić do tego, co robiłeś:
history
da ci 20 ostatnich wpisanych poleceń.
tail --lines=20 /var/log/dpkg.log
poda ostatnie 20 wierszy danych wyjściowych dowolnej instalacji pakietu, którą wykonywałeś