Développer le sous-shell avant de l'exécuter?

J'exécute souvent des commands en utilisant des sous-shell, et j'aimerais parfois que les sous-shell soient développés avant d'exécuter quelque chose. De cette façon, je pourrais vérifier ce que je fais et modifier éventuellement ce qui se passe.

Par exemple, comment puis-je get la command line suivante pour être développée avant de l'exécuter, afin que je puisse éditer les résultats du sous-shell?

par exemple

$ find -name "test.txt" /tmp/test.txt $ mv $(!!) /tmp/new.txt 

J'aimerais voir le sous-shell étendu avant d' exécuter la command, comme ceci:

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

Y a-t-il un moyen de le faire?

shell-expand-line ( \e\Ce ) étend les substitutions de commands dans bash.

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

$(!!)\e\Ce exécuterait à nouveau la command précédente et insertait la sortie:

 "\eo": "$(!!)\e\Ce" 

Il étend également d'autres substitutions de commands, mais il n'y a pas de command comme shell-expand-word .

Dans bash 4.0 ou version ultérieure, vous pouvez aussi activer globstar , tapez **/file.txt , et utilisez glob-complete-word ( \eg ) ou glob-expand-word ( \Cx* ).

Voici une astuce pratique: ajoutez cette ligne à ~ / .inputrc (en créant le file si nécessaire):

Control-x: shell-expand-line

Notez que vous pouvez également utiliser l'un des éléments suivants pour développer uniquement l'historique ou vos alias ou les deux:

Control-x: history-expand-line

ou

Control-x: alias-expand-line

ou

Control-x: history-et-alias-expand-line

Cela a été glané de ce blog , et cette question sur SuperUser , qui est très similaire: