Löschen Sie nur die Terminalausgabe des letzten Befehls


13

Kann die Ausgabe des letzten Befehls gelöscht werden, anstatt über Hunderte von Ausgabezeilen zu scrollen, um den vorherigen Befehlsverlauf anzuzeigen? lsLöschen Sie beispielsweise nach der Ausführung die Ausgabe, da Sie sie nicht mehr benötigen.

BEARBEITEN:

Dies ist nicht Ihre übliche clearoder ctrl+LOperation. Die Idee ist, durch den Verlauf zurückzuscrollen und nach der Ausgabe eines vorherigen Befehls zu suchen, ohne jedoch über eine Last von lsoder catoder oder eine sudo apt-get installAusgabe hinaus scrollen zu müssen, es sei denn, ich möchte wirklich. Es könnte ungefähr so ​​aussehen:

cat fileIWantToRemember
ls directoryIWantToForget
# some command that wipes the output of ls
# scroll back to see the output of cat immediately

Wollen Sie die Ausgabe löschen oder den Befehl aus Ihrem Befehlsverlauf entfernen? Wenn Sie Ihren Befehlsverlauf ändern möchten, spricht dieser Thread möglicherweise das an, wonach Sie suchen.
ernie

Das Terminal zeigt nur einen Textstrom an und speichert einige in seinem eigenen internen Puffer. Es gibt keine Möglichkeit, die Befehlsausgabe zu kennen oder zwischen ihnen zu unterscheiden. Das rxvt-unicode-Terminal verfügt über einen Perl-Interpreter, der möglicherweise so etwas implementieren kann. Aber soweit ich weiß, ist es nicht getan.
Keith

Vor langer Zeit habe ich unter Mac OS X einen Terminalemulator verwendet, der diese Funktion hatte, aber ich kann mich nicht mehr daran erinnern, wie er genannt wurde. Es war jedoch nicht kostenlos. Bei einer schnellen Google-Suche bin ich jedoch auf finalterm.org gestoßen , das anscheinend versucht, diese Funktion zu implementieren. "Final Term befindet sich jedoch in einer intensiven Entwicklung und ist weder stabil noch vollständig!", Also habe ich es nicht ausprobiert. Sieht aber interessant aus. Die Google-Suche, für was es wert ist, warterminal emulator output folding
Rici

Final Term ist stark genug entwickelt, um Befehle (und viele andere erstaunliche Dinge) zu falten, und sobald es eine Tastenkombination dafür gibt, ist das Problem gelöst. Ich
fing an

1
Es ist nicht Ihre genaue Antwort, aber in solchen Fällen verwende ich zum Anzeigen des Inhalts großer Dateien den Befehl 'less' anstelle von 'cat'. Eine andere Sache ist, wenn ein Befehl eine große Anzahl von Zeilen als Ausgabe an die Konsole gibt, können Sie dies vermeiden, indem Sie "$ the-command | less" schreiben.
Devasish

Antworten:


4

Dank @rici kann dieses Verhalten als "Falten" bezeichnet werden. Die Ausgabe von Befehlen wird nicht vergessen, aber Sie können sie ausblenden, bis Sie sie erneut benötigen. Falten ist in Texteditoren üblich, scheint jedoch in Terminalemulatoren selten zu sein.

Final Term ist ein neuer Terminal-Emulator, der neben vielen anderen ausgefallenen Tricks auch das Falten umfasst. Achtung: "Final Term befindet sich in einer starken Entwicklung und ist weder stabil noch vollständig!" Es war stark genug entwickelt, um meine Befehle beim Testen zu falten, aber zu instabil, um nicht abzustürzen. Ein zu beobachten.


0

Ich denke, Sie suchen nach dem klaren Befehl ...

clear

"Löschen" löscht Ihren letzten Befehl aus der Ansicht. Sie können im Terminal nach oben scrollen, um es bei Bedarf erneut anzuzeigen.


Es geht darum, nicht daran vorbeirollen zu müssen, wenn Sie in Ihrer Geschichte nach etwas anderem suchen.
Nacnudus

Meinen Sie damit, dass Sie die Ausgabe des Befehls unterdrücken möchten? Wenn ja, kann dies Ihnen helfen: stackoverflow.com/questions/617182/…
phe0113

2
Das ist großartig, wenn ich nie eine Ausgabe sehen möchte. Ich möchte die Ausgabe zum ersten Mal sehen und dann vergessen. In dem Beispiel, das ich gegeben habe, möchte ich die Ausgabe von lsaus irgendeinem Grund überprüfen , aber dann möchte ich sie entfernen, damit ich nicht weiter daran vorbeirollen muss, um die Ausgabe von cat zu finden. Natürlich könnte ich einfach wieder Katze machen, aber ich kann mir vorstellen, eine Folge von Befehlen beibehalten zu wollen, und es wäre schön, nicht alle wiederholen zu müssen.
Nacnudus

0

In Bash können Sie die Verknüpfung drücken Ctrl + L, um den Bildschirm zu löschen, ähnlich wie beim clearBefehl. ( http://ss64.com/bash/syntax-keyboard.html )

Oder Sie können history | tail -3die letzten drei Befehle anzeigen. ( http://www.howtogeek.com/howto/44997/how-to-use-bash-history-to-improve-your-command-line-productivity/ )


Siehe meinen Kommentar zu @Justin unten. Es geht nicht darum, daran vorbeirollen zu müssen, wenn Sie in der Geschichte nach etwas anderem suchen. So etwas wie HISTCONTROL=ignorespacein Ihrem zweiten Link, den Sie nachträglich verwenden können, wäre gut.
Nacnudus

Ich bin ein bisschen verloren bei dem, was Sie erreichen wollen. Ein anderer Gedanke: In vielen Konsolen, die ich verwendet habe, können Sie normalerweise Pfeiltasten verwenden, um den Befehlsverlauf in Bash zu durchsuchen. Gilt dies für Ihre Situation?
phe0113

Klärt meine Bearbeitung die Frage?
Nacnudus

@nacnudus, ja, ich
verstehe

0

Es hört sich so an, als ob Sie Elemente aus Ihrem Verlauf entfernen möchten. Um dies zu tun, müssen Sie zuerst das Schreiben des Verlaufs im laufenden Betrieb aktivieren und nicht beim Abmelden, indem Sie ~ / .bashrc bearbeiten und Folgendes hinzufügen:

shopt -s histappend; export PROMPT_COMMAND='history -a';'

So löschen Sie Elemente:

history -d offsetDabei ist Offset der Verlaufseintrag, den Sie löschen möchten

Basierend auf diesem Forenthread .


Dies scheint es aus der Verlaufsdatei zu löschen, was fast die richtige Idee ist, aber kann es es vom aktuellen Terminal löschen?
Nacnudus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.