Im Terminal kann ich verwenden, !!
was auf meinen vorherigen Befehl verweist.
Ist es möglich, dies in einem Alias zu verwenden? Ich habe es versucht, aber was passiert ist, dass die doppelten Ausrufezeichen wörtlich interpretiert werden.
Was ich möglich haben möchte ist:
- Ich gebe einen Befehl ein
- Ich gebe einen Alias ein, der enthält, was in Schritt 1 eingegeben wurde
Wenn es eine Lösung mit Skripten gibt, ist dies ebenfalls akzeptabel.
command-line
bash
alias
Ludwig Magnusson
quelle
quelle
fc
Befehl, damit ein Texteditor geöffnet wird, da dies der einfachste Weg ist, lange Befehle zu bearbeiten. Lassen Sie es mich meinem Beitrag hinzufügen. Vielleicht könnten Sie auch ein Beispiel für einen Befehl geben?Antworten:
Der Befehl, der den zuletzt ausgeführten Befehl auflistet, lautet
fc -nl -1
. Mithilfe der Ausgabesubstitution können wir demselben Inhalt weitere Parameter hinzufügenDas Zitieren kann jedoch ein Problem bei diesem Ansatz sein
Eine sehr schöne Funktion von
fc
ist, dass, wenn Sie denfc
Befehl einfach selbst ausführen , der in derFCEDIT
Variablen angegebene Texteditor geöffnet wird (in dem Sie wahrscheinlich speichern möchten~/.bashrc
) und der Inhalt der Zeile Ihr letzter Befehl ist. Ich schlage vor, Sie verwenden esnano
als Texteditor, aber wenn Sie es wissenvim
- noch besser.Was ist zum Beispiel, wenn ich eine
qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindow
große Zeile bearbeiten muss? Aber mitfc
kann ich öffnenvim
und bearbeiten/org/ayatana/bamf/matcher
, speichern, beenden und es wird ausgeführt.quelle
Sie können nicht verwenden,
!!
aber ...Aus dem Handbuch :
quelle
Wenn Sie darauf bestehen, die
!!
Verlaufserweiterungssyntax anstelle vonfc
(bereits erwähnt) zu verwenden, gibt es einen Weg.Standardmäßig ist die
history
Erweiterung für nicht interaktive Shell-Sitzungen deaktiviert, z. B. in Skripten.Um die Verlaufserweiterung in Skripten zu aktivieren, aktivieren Sie zuerst die entsprechenden Shell-Optionen:
set -o histexpand
kann auch so geschriebenset -H
werden.Jetzt würden die Verlaufserweiterungsoperationen zB
!!
im Skript funktionieren.quelle