Wenn ich in einer Shell (zsh) arbeite, passiert es oft, dass ich cd
irgendwo bin und einen schnellen Blick auf das Verzeichnis werfen möchte. Die Verwendung ls
erzeugt möglicherweise eine Menge Ausgabe und lässt diese im Terminal. Die Verwendung ls | less
ist besser, hinterlässt jedoch wieder Spuren, wenn ich beende. less
Die gesamte Ausgabe ist noch da. Haben Sie eine Idee, wie ich so etwas machen kann, ls | less
aber wenn ich beende less
, bleibt der Terminalbildschirm unberührt.
Antwort1
Bei mir less
verhält es sich wie beschrieben - ich muss verwenden, less -X
umdeaktivierendieses Verhalten.
Sie könnten versuchen, explizit die Option "alternativer Bildschirmpuffer", die viele Terminals implementieren.
vim
Dies wird von Editoren wie / verwendet nano
, sodass das Terminal beim Beenden in den vorherigen Zustand zurückversetzt wird.
Versuche dies:
tput smcup
ls | less
tput rmcup
Wenn tput
dies nicht verfügbar ist, versuchen Sie es mit echo $'\e[?1049h'
/ echo $'\e[?1049l'
bzw.
Antwort2
Da Sie erwähnen, dass Sie zsh verwenden, können Sie die in zsh integrierte Tab-Vervollständigung nutzen. Sie erhalten keine „lange“ ls-Liste, können aber eine Vorschau der Namen von Verzeichnissen und Dateien anzeigen, indem Sie „ls“ gefolgt von einer Tabulatortaste eingeben. Sie sehen, welche Dateien/Verzeichnisse Sie in Ihrem aktuellen Arbeitsverzeichnis möglicherweise „ls“ verwenden könnten, und können dann entweder gezielt eins mit „ls“ verwenden, ein „-l filename“ hinzufügen, um ein bestimmtes Verzeichnis im Detail anzuzeigen, oder einfach „Strg-u“ drücken, um die Zeile zu löschen, in der Sie sich befinden, und sich darauf vorbereiten, einen anderen Befehl einzugeben. Die Vorschläge zur Tab-Vervollständigung werden dann ausgeblendet.
Wenn ich beispielsweise auf einer meiner VMs "ls "[TAB] drücke, wird mir Folgendes angezeigt:
user@fbsd:~% ls
.cshrc .mailrc .ssh/
.login .profile .zshrc
.login_conf .rhosts code/
.mail_aliases .shrc inventory.hw.gather.sh*
Wenn ich Strg-U drücke, verschwinden die Vorschläge unter meiner Befehlszeile.