Zeigen Sie ältere oder neuere Verlaufselemente mit dem Befehl history in zsh an

7

Ich habe den Befehl history eingegeben und er hat mir die letzten 10 von mir ausgeführten Befehle angezeigt. Jetzt wollte ich die letzten 20 Befehle sehen, die von mir ausgeführt wurden (nachdem ich die Dokumentation gelesen hatte):

Ein Argument von n listet nur die letzten n Zeilen auf.

Ich habe getippt history 20. Dies zeigte mir alle Befehle von Befehl Nummer 20 bis zum aktuellen Befehl, der irgendwo um 2000 lag. Also habe ich es versucht history -20 und das funktioniert. Es zeigt mir die letzten 20 Befehle. Dies ist jedoch nicht das, was in der Dokumentation gesagt wird.

Auch history -d [offset]sollte den Befehl löschen , dass gegenüber . Auch das funktioniert in meinem zsh nicht.

Dies ist direkt aus meiner zsh-Shell: Geben Sie hier die Bildbeschreibung ein

user590849
quelle
"Ein Argument von n listet nur die letzten n Zeilen auf" steht in der Dokumentation zu bash. Zsh macht die Dinge anders. zsh.sourceforge.net/Doc/Release/…
Mark Plotnick
Unter Linux zeigt der man builtinsBefehl die Seite BASH BUILTIN COMMANDS an , unabhängig davon, welche Shell Sie verwenden. Versuchen Sie man zshbuiltinsoder die Webseite in meinem vorherigen Kommentar, um die richtige Dokumentation zu sehen.
Mark Plotnick

Antworten:

8

In zsh historyist ein Alias ​​für fc -l 1. Wenn Sie dies tun, wird history -20es durch einen Alias ersetzt, fc -l 1 -20der einfach nicht funktioniert. Verwenden Sie stattdessen fcdirekt:

  ~  fc -l -20
10095  grep -R PAPER /usr/lib/locale/
10096  man locale
10097  man 7 locale
10098  mc
10099  history
10100  history --help
10101  run-help history
10102  history 20
10103  history 1 20
10104  history -l 20
10105  fc
10106  history -l 20
10107  type history
10108  fc -l ..20
10109  fc -l -20
10110  history -l -20
10111  history -20
10112  fc -l -20
10113  type history
10114  fc -l 1 -20

und es wird dir gut gehen.

Braiam
quelle
Du verstehst meine Frage nicht. Ich weiß, dass die Geschichte -20 (oder fc -l -20) funktioniert. Ich möchte wissen, warum die Historie 20 (oder fc -l 20) nicht funktioniert. Es sollte gemäß der Dokumentation funktionieren.
user590849
@ user590849 run-help historysagt dazu nichts. Wo haben Sie diese Dokumentation gefunden?
Braiam
@Braiam: history~~ fc -l, warum fc -l 1?
Cuonglm
1
@ user590849, Sie lesen die bashDokumentation, nicht die zshDokumentation.
Stéphane Chazelas
Fügen Sie Ihrem .zshrc Folgendes hinzu: function lhistory() { fc -l -$1}und verwenden Sie es, um die letzten (zum Beispiel) 10 Befehle anzuzeigen:lhistory 10
Olshansk
3

Das erste , was zu wissen, in zsh, historywas bedeutet fc -l.

Dann lesen Sie man zshbuiltins , Abschnitt über fcBefehl:

Wählen Sie aus der Verlaufsliste einen Befehlsbereich vom ersten bis zum letzten aus. Die Argumente first und last können als Zahl oder als Zeichenfolge angegeben werden. Eine negative Zahl wird als Versatz zur aktuellen Verlaufsereignisnummer verwendet . Eine Zeichenfolge gibt das letzte Ereignis an, das mit der angegebenen Zeichenfolge beginnt. Alle Ersetzungen alt = neu, falls vorhanden, werden dann für die Befehle ausgeführt.

...

Wenn first nicht angegeben ist, wird es auf -1 (das letzte Ereignis) oder auf -16 gesetzt, wenn das Flag -l angegeben wird. Wenn last nicht angegeben ist, wird es auf first oder auf -1 gesetzt, wenn das Flag -l angegeben ist .

Wie der Arzt sagte, ist eine negative Zahl ein Versatz zum aktuellen Verlauf. So history -20Liste Befehl von Strom auf 20 Befehl vor.

Wenn Sie eine Nummer angeben history 20, zshdenken Sie , dass es first to lastForm ist. In diesem Fall firstwird auf 20 gesetzt, aber lastweggelassen. Also lastwird gesetzt, -1weil fc -lverwendet wird.

cuonglm
quelle