Subshell vor der Ausführung erweitern?

Subshell vor der Ausführung erweitern?

Ich führe Befehle häufig mithilfe von 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 als Nächstes passieren wird.

Wie kann ich beispielsweise erreichen, dass die folgende Befehlszeile vor der Ausführung erweitert wird, sodass ich die Ergebnisse der Subshell bearbeiten kann?

z.B

$ find -name "test.txt" 
/tmp/test.txt

$ mv $(!!) /tmp/new.txt

Ich würde gerne die Subshell erweitert sehenVorIch führe den Befehl wie folgt aus:

$ mv /tmp/test.txt /tmp/new.txt

Gibt es eine Möglichkeit, dies zu tun?

Antwort1

shell-expand-line( \e\C-e) erweitert Befehlsersetzungen in Bash.

$ bind -p|grep shell-ex
"\e\C-e": shell-expand-line

$(!!)\e\C-ewürde den vorherigen Befehl erneut ausführen und die Ausgabe einfügen:

"\eo": "$(!!)\e\C-e"

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 aktivieren globstar, eingeben **/file.txtund glob-complete-word( \eg) oder glob-expand-word( \C-x*) verwenden.

Antwort2

Hier ist ein praktischer Trick – fügen Sie diese Zeile zu ~/.inputrc hinzu (erstellen Sie die Datei bei Bedarf):

Strg-x: Shell-Zeile erweitern

Beachten Sie, dass Sie auch eine der folgenden Möglichkeiten haben, um nur den Verlauf oder Ihre Aliase oder beides zu erweitern:

Strg+x: Verlauf-Zeile erweitern

oder

Strg-x: Alias-Expand-Line

oder

Strg-x: Verlauf und Aliaszeile erweitern

Dies wurde gesammeltvon diesem Blog, Unddiese Frage auf SuperUser, das sehr ähnlich ist:

verwandte Informationen