3 Stimmen

Kann ich die vollständige Befehlshistorie aus einer Perl pdl2-Shell abrufen (wie die History in Bash)?

Ich benutze die pdl2 Shell, wie kann ich meinen gesamten Befehlsverlauf auflisten?

4voto

unpythonic Punkte 3950

Sie können Ihre Geschichte in $HOME/.perldl_hist finden

Dies kann davon abhängen, ob Term::ReadLine::Gnu installiert ist (was bei mir standardmäßig der Fall ist).

Wenn Sie Zugriff auf Ihre Geschichte innerhalb von pdl wollen, verwenden Sie einfach die Aufwärtspfeiltaste für die vorherigen Befehle oder geben Sie ^R (Strg+R) ein, gefolgt von einem Text, nach dem Sie suchen möchten (wiederholtes Drücken von ^r für weitere Übereinstimmungen weiter zurück).

$ pdl
perlDL Shell v1.354
...blah blah blah...
pdl> print 1+1
2
pdl> print 2+2
4
pdl> quit

$ cat ~/.perldl_hist 
print 1+1
print 2+2
$ 

BEARBEITEN: Um die History von innerhalb von pdl aus zu finden, führen Sie folgendes aus:

$ pdl
pdl> print join "\n", $PERLDL::TERM->GetHistory

Das $PERLDL::TERM->GetHistory liefert ein Array der aktuellen History. Es ist einfach ein reguläres Array, also können Sie damit machen, was Sie wollen. Zum Beispiel, um alle Ihre kürzlich durchgeführten Histogrammoperationen zu finden, die eine Matrix namens mypdl beinhalten, könnten Sie folgendes tun:

pdl> print join "\n", grep { /histogram/ && /mypdl/ } $PERLDL::TERM->GetHistory

1 Stimmen

Vielen Dank. Ich habe die hist-Datei vergessen. Ich wollte die Historie innerhalb von pdl2 auflisten, um herauszufinden, was ich zuvor gemacht habe, bevor ich weiter programmiere, und habe die Möglichkeit von ^z cat... vergessen. Nun, das nächste Mal, wenn ich es wirklich innerhalb von pdl2 sehen möchte, kann ich immer pdl> print qx{cat ~/.perldl_hist} machen.

1 Stimmen

Das Problem bei diesem Ansatz ist, dass ich den Verlauf meiner derzeitigen Sitzung sehen möchte, ohne zu beenden!!. Ist das möglich? Der Verlauf der aktuellen Sitzung wird erst nach dem Beenden zu .perldl_hist hinzugefügt.

1 Stimmen

@Pablo - Ich habe die Antwort aktualisiert, um die Informationen von innerhalb von pdl zu bekommen. Bitte beachten Sie, dass entweder Term::ReadLine::Gnu (bevorzugt) oder Term::ReadLine::Perl installiert sein muss.

2voto

chm Punkte 147

Aus der PDL-Dokumentation (d.h., pdldoc perldl):

Verlaufmechanismus
  Wenn Sie die Perl-Module ReadLines und ReadKeys installiert haben, unterstützt
  perldl einen Verlauf und einen Zeilen-Editiermechanismus unter Verwendung von
  Bearbeitungstasten, die ähnlich wie bei emacs sind. Die letzten 500 Befehle werden
  immer zwischen Sitzungen in der Datei .perldl_hist in Ihrem Home-Verzeichnis gespeichert.
  Setzen Sie $PERLDL::HISTFILESIZE, um die Anzahl der gespeicherten Zeilen zu ändern. 
  Der Befehl "l [Nummer]" zeigt Ihnen die letzten "Nummer" Befehle, die Sie eingegeben haben,
  wobei "Nummer" standardmäßig 20 ist.

0 Stimmen

Nachdem Sie einen rechnergestützten Ansatz in der pdl2-Shell entwickelt haben, können Sie die .perldl_hist-Datei kopieren und bearbeiten, um ein Skript/Programm zu erstellen, das dasselbe tut.

1voto

Ed. Punkte 1750

Der Befehl l listet Ihre Historie auf, wenn Sie eine geeignete readline installiert haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X