J'exécute souvent des commandes à l'aide de sous-coquilles et j'aimerais parfois que les sous-coquilles soient développées avant d'exécuter quelque chose. De cette façon, je pourrais vérifier ce que je fais et éventuellement modifier ce qui est sur le point de se produire également.
Par exemple, comment puis-je développer la ligne de commande suivante avant de l'exécuter, afin de pouvoir modifier les résultats du sous-shell?
par exemple
$ find -name "test.txt"
/tmp/test.txt
$ mv $(!!) /tmp/new.txt
Je voudrais voir le sous-shell développé avant d' exécuter la commande, comme ceci:
$ mv /tmp/test.txt /tmp/new.txt
Y a-t-il un moyen de le faire?
bash
shell
command-history
subshell
Brad Parks
la source
la source
zsh
et c'est génial et fait cela, comme vous le suggérez ... bon conseil! Je laisse ici la réponse originale, car c'était unebash
question.Réponses:
shell-expand-line
(\e\C-e
) étend les substitutions de commandes dans bash.$(!!)\e\C-e
exécuterait à nouveau la commande précédente et insérerait la sortie:Il étend également d'autres substitutions de commandes, mais il n'existe aucune commande similaire
shell-expand-word
.Dans bash 4.0 ou version ultérieure, vous pouvez également activer
globstar
, taper**/file.txt
et utiliserglob-complete-word
(\eg
) ouglob-expand-word
(\C-x*
).la source
Voici une astuce pratique - ajoutez cette ligne à ~ / .inputrc (en créant le fichier si nécessaire):
Notez que vous pouvez également utiliser l'une des options suivantes pour développer uniquement l'historique, ou vos alias, ou les deux:
ou
ou
Cela a été glané de ce blog , et cette question sur SuperUser , qui est très similaire:
la source