Führen Sie mehrere Verlaufsbefehle erneut aus

22

Stellen Sie sich vor, Sie haben gerade ein Dutzend Befehle ausgeführt. Sagen...

$ cd foo/    # history cmd #10000 (my history is very long)
$ ... more commands ...
$ cd ../     # history cmd #10012 

Ich weiß, dass ich sie verkettet mit erneut ausführen kann, !-12 && !-11 && !-10 && (and so on) && !!wenn sie gerade ausgeführt wurden (unwahrscheinlich), oder !10000 && !10001 && !10002 && (and so on)gibt es eine einfachere Möglichkeit, als jede Verlaufsnummer mit einem Knall und kaufmännischem Und von Hand einzugeben?

Gibt es vielleicht eine Art von Reichweite, die ich in der Bash nicht kenne?

zB !{10000-10012}# so etwas funktioniert nur.

inanutshellus
quelle

Antworten:

23

Dafür ist der fcBefehl gedacht.

fc -12 -1

oder

fc 10000 10012

Dies ist nicht ganz das, was Sie wollen, da es zuerst einen Editor startet, aber das ist wahrscheinlich eine gute Sache, da es Ihnen die Möglichkeit gibt, zu überprüfen, ob Sie die richtigen Befehle haben und sie sogar mit allen Funktionen Ihres Lieblingseditors zu bearbeiten. Sobald Sie Ihre Änderungen speichern und den Editor verlassen, werden die Befehle ausgeführt.

jw013
quelle
Ah hah! Brillant! fc. Befehle korrigieren. Macht Sinn!
Inanutshellus
1
Um zu vermeiden, dass ein Editor gestartet wird (gefährlich!), fc -e true -12 -1
Können
nicht verfügbar in Ubuntu
Okwap
1
@okwap, Quatsch. Es ist POSIX-spezifiert und auf jeden Fall in Ubuntu verfügbar. (Es ist eine eingebaute Shell, obwohl - wie es sein muss - also, wenn Sie suchen, werden /binSie es nicht finden.)
Wildcard