Ich habe das oft gewollt. Als ich csh (und tcsh) benutzte, hatte ich eine Redewendung:
!:88*:p
Diese Redewendung fügt "Wort 88 bis zum letzten Wort" des vorherigen Befehls an der Stelle ein, an der Sie in die aktuelle Befehlszeile tippen. Dies ist normalerweise das Ende. In csh ist es kein Fehler, dass ein solcher Ausdruck keine Wörter produziert. Das heißt, es muss kein Wort 88 geben, noch eines, das darauf folgt. Wenn kein Wort 88 vorhanden ist, werden dem Ende des eingegebenen Befehls keine Wörter hinzugefügt, und die resultierende Befehlszeile wird ohne Ausführung in den Verlauf verschoben.
Wie Sie wahrscheinlich wissen,
*! (wie !! und! -1) ist der vorherige Befehl;
*: 88 ist Wort 88 (das erste Wort - normalerweise der Befehl - ist Null) und csh würde erfordern, dass ein solches Wort existiert, aber ...
*: 88 * sind alle Wörter, die mit Wort 88 beginnen, und dann tut csh es es ist nicht erforderlich, dass das Wort existiert;
*: p bedeutet Drucken, aber die Befehlszeile nicht ausführen.
Mit oder ohne: p wird die Befehlszeile zum Befehlsverlauf hinzugefügt.
"Warum 88?" du wunderst? Weil es derselbe Schlüssel ist wie der *, den ich brauche. Wenn Sie so lange Befehle haben, vielleicht!: 888 *: p ist das, was Sie brauchen. Entschuldigung, das funktioniert nicht mit bash AFAIK. Bash wird nur sagen
bash: :88*: bad word specifier
Unterhaltsame Tatsache: Ihr Befehl muss normalerweise nicht an erster Stelle stehen.
> /tmp/foo echo My command is word 3
ist gültig in bash und csh.