Ich führe häufig Befehle mit Subshells aus und möchte manchmal, dass die Subshells erweitert werden, bevor ich etwas ausführe. Auf diese Weise kann ich überprüfen, was ich tue, und möglicherweise auch bearbeiten, was passieren wird.
Wie kann ich beispielsweise die folgende Befehlszeile erweitern, bevor ich sie ausführe, damit ich die Ergebnisse der Subshell bearbeiten kann?
z.B
$ find -name "test.txt"
/tmp/test.txt
$ mv $(!!) /tmp/new.txt
Ich möchte, dass die Subshell erweitert wird, bevor ich den Befehl ausführe:
$ mv /tmp/test.txt /tmp/new.txt
Gibt es eine Möglichkeit, dies zu tun?
bash
shell
command-history
subshell
Brad Parks
quelle
quelle
zsh
und es ist großartig und macht das, wie Sie vorschlagen ... netter Tipp! Ich werde die ursprüngliche Antwort hier lassen, da es einebash
Frage war.Antworten:
shell-expand-line
(\e\C-e
) erweitert Befehlsersetzungen in bash.$(!!)\e\C-e
würde den vorherigen Befehl erneut ausführen und die Ausgabe einfügen:Es erweitert auch andere Befehlsersetzungen, aber es gibt keinen Befehl wie
shell-expand-word
.In Bash 4.0 oder höher können Sie auch ( ) oder ( ) aktivieren
globstar
, eingeben**/file.txt
und verwenden .glob-complete-word
\eg
glob-expand-word
\C-x*
quelle
Hier ist ein praktischer Trick: Fügen Sie diese Zeile zu ~ / .inputrc hinzu (erstellen Sie die Datei bei Bedarf):
Beachten Sie, dass Sie auch eine der folgenden Optionen verwenden können, um nur den Verlauf oder Ihre Aliase oder beides zu erweitern:
oder
oder
Dies wurde aus diesem Blog und dieser Frage auf SuperUser entnommen , die sehr ähnlich ist:
quelle