Löschen Sie tatsächlich einen Terminalbildschirm
-
27-10-2019 - |
Frage
Verwendung der clear
Der Befehl auf dem Terminal täuscht den Benutzer nur vor, der Bildschirm sei gelöscht worden. Sie können immer noch die Ausgabe der vorherigen Befehle sehen, wenn Sie mit der Maus scrollen.Das macht das Leben schwer, wenn man in einem Tsunami an Texten ertrinkt.
Verschiedene Lösungen (Escape-Code etc.), die im Internet zu finden sind, sind nur Variationen dessen, was der Befehl „clear“ bereits leistet.
Wie löscht man also tatsächlich den Inhalt eines Terminals unter Linux?
Lösung
Verwenden Sie den folgenden Befehl, um einen leeren Bildschirm zu erstellen, anstatt nur neue Zeilen hinzuzufügen ...
printf "\033c"
Ja, das ist ein „printf“ am Bash-Prompt.
Wahrscheinlich möchten Sie jedoch einen Alias definieren ...
alias cls='printf "\033c"'
Erläuterung
\033 == \x1B == 27 == ESC
Das wird also <ESC>c
Dies ist der VT100-Escape-Code zum Zurücksetzen des Terminals. Hier Hier finden Sie weitere Informationen zu Terminal-Escape-Codes.
Bearbeiten
Hier sind ein paar andere Möglichkeiten, es zu tun ...
printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e Enable interpretation of of backslash escapes
# -n Do not output a new line
KDE
Das Obige funktioniert nicht auf der KDE-Konsole (genannt Konsole), aber es gibt Hoffnung!Verwenden Sie die folgende Befehlsfolge, um den Bildschirm und den Scroll-Back-Puffer zu löschen ...
clear && echo -en "\e[3J"
Oder verwenden Sie vielleicht den folgenden Alias auf KDE ...
alias cls='clear && echo -en "\e[3J"'
Ich habe den Befehl zum Löschen des Zurückscrollens erhalten von Hier.
Andere Tipps
Versuchen reset
. Es löscht den Terminalbildschirm, aber auf die vorherigen Befehle können über Pfeil oder auf die Schlüsselbindung zugegriffen werden.
tput reset
Das wird den Trick machen!
Keine der Antworten, die ich gelesen habe, funktionierte in Putty, also fand ich einen Kommentar zu Dieser Artikel:
In den Einstellungen für Ihre Verbindung finden Sie unter "Fenster-> Verhalten" ein Einstellungseinsatz "Systemmenü" auf Alt allein ". Dann scrollt Strg+L, Alt, L (das ist ein niedrigerer Fall L) den Bildschirm und löscht dann den Scrollback -Puffer.
(Relevant für das OP, weil ich eine Verbindung zu einem Ubuntu -Server herstelle, aber anscheinend auch relevant ist, unabhängig von Ihrem Server.)
Der folgende Link erklärt, wie Sie diesen Alias dauerhaft festlegen, sodass Sie ihn nicht ständig eingeben müssen.
https://askubuntu.com/questions/17536/how-do-i-create-a-permanent-bash-alias
Dies sind die Schritte, die unter diesem Link detailliert beschrieben werden.
- vim ~/.bashrc oder gedit ~/.bashrc oder welcher Texteditor auch immer Sie mögen
- Fügen Sie Alias cls='printf "\033c"' am Ende der Datei ein
- speichern und schließen
- .~/.bashrc (und ja, dazwischen sollte ein Leerzeichen sein.und ~)
- Überprüfen Sie nun, ob alles funktioniert hat!
Ich übernehme keine Anerkennung dafür, dass diese Informationen nur weitergegeben werden.
Mein Lieblingsbefehl für das menschliche Menschen dafür ist:
reset
Getestet auf Xterm und VT100. Es hilft auch nach einer abnormalen Programmabgabe. Hält den Befehlspuffer, sodass das up-arrow durch frühere Befehle radelt.
Prost: d
Mit KDE und Ubuntu 12.04 LTS und dem "Konsolen" -terminal funktioniert keines der veröffentlichten Antworten. Durch das Drücken der Standard -Tastaturverknüpfung Strg+Shift+X funktioniert jedoch! Quelle:
Ich weiß, dass die Lösung, die das Drucken neuer Linien verwendet, nicht viel unterstützt wird, aber wenn alles andere fehlschlägt, warum nicht? Vor allem, wo man in einer Umgebung arbeitet, in der wahrscheinlich jemand anderes den Bildschirm sehen kann, aber nicht in der Lage ist, zu kleiden. Eine potenzielle Lösung ist dann der folgende Alias:
alias c="printf '\r\n%.0s' {1..50}"
Dann tippen c+Enter
am Terminal.
Nur um das hinzuzufügen tmux
Scroll -Puffer ist nicht klar mit clear
, reset
oder printf
. Du musst :clear-history
. Sehen Verknüpfung.
echo -e "\e[3J"
Dies funktioniert in Linux -Maschinen
Kompilieren Sie diese App.
#include <iostream>
#include <cstring>
int main()
{
char str[1000];
memset(str, '\n', 999);
str[999] = 0;
std::cout << str << std::endl;
return 0;
}