Dans le terminal, je peux utiliser !!
qui fera référence à ma commande précédente.
Est-il possible d'utiliser ceci dans un alias? Je l'ai essayé, mais ce qui se passe, c'est que les doubles points d'exclamation sont interprétés littéralement.
Ce que je veux avoir possible, c'est:
Si une solution utilisant des scripts est également acceptable.
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 contenu
$> ls /etc/passwd
/etc/passwd
$> $(fc -nl -1) /etc/group
/etc/group /etc/passwd
$>
Citer, cependant, peut être un problème avec cette approche
Une caractéristique très intéressante de fc
est que si vous exécutez simplement la commande fc
, elle ouvrira l'éditeur de texte spécifié dans la variable inFCEDIT
(que vous souhaiterez probablement stocker dans ~/.bashrc
) et le contenu de la ligne sera votre dernière commande. Pour votre facilité, je vous suggère d'utiliser nano
comme éditeur de texte, mais si vous connaissez vim
, c'est encore mieux.
Par exemple, si je dois éditer qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindow
Huge line, hein? Mais avec fc
, je peux ouvrir vim
et éditer /org/ayatana/bamf/matcher
, enregistrer, quitter et il sera exécuté.
Vous ne pouvez pas utiliser !!
mais ...
Du manuel :
Un alias utile à utiliser avec la commande fc est
r='fc -s'
, de sorte que taper 'r cc' exécute la dernière commande commençant par cc et taper 'r' ré-exécute la dernière commande. .
Si vous insistez pour utiliser la syntaxe d'expansion de l'historique !!
à la place de fc
(déjà mentionné), il existe un moyen.
Par défaut, l'extension history
est désactivée pour les sessions Shell non interactives, par exemple. dans les scripts.
Pour activer l’extension de l’historique dans les scripts, activez d’abord les options de Shell appropriées:
set -o history
set -o histexpand
set -o histexpand
peut également être écrit en tant que set -H
.
Maintenant, les opérations d'expansion de l'historique, par exemple !!
fonctionnerait dans le script.