Une de mes astuces Unix préférées est de ^x^y
prendre la dernière commande et de remplacer la première instance de "x" par "y". Cependant, je me demande si une astuce similaire fonctionne pour remplacer toutes les occurrences de "x" par "y" dans la dernière commande?
bash
shell
command-line
command-history
le maçon
la source
la source
command-history
balise pour cela. Ajoutée. Aussi, je suppose que vous faites allusion à labash
coquille?Réponses:
Vous pouvez utiliser la
!!:gs/search/replace/
notation pour faire ce que vous voulez. Ceci utilise la recherche globale et remplacer (:gs
):avant
après
Références
la source
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
. Qu'est-ce que je rate?bash --version
= Libération de 4.2.45 (1).Je ne crois pas qu'il existe un moyen facile d'ajouter quelque chose
^string1^string2
à faire pourbash
remplacer chaque occurrence. Comme le fait remarquer le slm, vous devez écrire!!:gs/string1/string1
.Mais dans
zsh
, vous pouvez simplement ajouter:G
:Dans les deux cas
bash
etzsh
, vous pouvez également utiliserfc -s
comme ceci:Cela est souvent transformé en un alias appelé
r
afin que vous puissiez simplement faire:la source
Je crois que la meilleure option est d'utiliser ": &"
la source
:&
qu'il y a de plus en plus d'occurrences à remplacer.