Dans le terminal, je peux utiliser !!
qui référencera ma commande précédente.
Est-il possible de l'utiliser dans un alias? Je l'ai essayé, mais ce qui se passe, c'est que les points d'exclamation doubles sont interprétés littéralement.
Ce que je veux avoir, c'est:
- J'entre une commande
- Je tape un alias qui inclura ce qui a été entré à l'étape 1
S'il existe une solution utilisant des scripts, elle est également acceptable.
command-line
bash
alias
Ludwig Magnusson
la source
la source
fc
commander, ce qui ouvre un éditeur de texte, car c'est le moyen le plus simple de modifier de longues commandes. Permettez-moi de l'ajouter à mon message. Aussi, peut-être pourriez-vous fournir un exemple de commande?Réponses:
La commande qui répertorie la dernière commande exécutée est
fc -nl -1
. En utilisant la substitution de sortie, nous pouvons ajouter plus de paramètres au même contenuCiter, cependant, peut être un problème avec cette approche
Une fonctionnalité très intéressante
fc
est que si vous exécutez lafc
commande seule, elle ouvrira l'éditeur de texte spécifié dans laFCEDIT
variable (dans laquelle vous souhaitez probablement le stocker~/.bashrc
) et le contenu de la ligne sera votre dernière commande. Pour votre facilité, je vous suggère de l'utilisernano
comme éditeur de texte, mais si vous le savezvim
- encore mieux.Par exemple, que faire si je dois modifier
qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindow
une ligne énorme, non? Mais avecfc
, je peux ouvrirvim
et éditer/org/ayatana/bamf/matcher
, enregistrer, quitter et ça fonctionnera.la source
Vous ne pouvez pas utiliser
!!
mais ...Du manuel :
la source
Si vous insistez pour utiliser la
!!
syntaxe d'extension d'historique au lieu defc
(mentionnée déjà), il existe un moyen.Par défaut,
history
expansion est désactivée pour les sessions shell non interactives, par exemple dans les scripts.Pour activer l'expansion de l'historique dans les scripts, activez d'abord les options de shell pertinentes:
set -o histexpand
peut s'écrireset -H
.Maintenant, les opérations d'extension de l'historique fonctionneraient par exemple
!!
à l'intérieur du script.la source