Einer meiner Lieblings-Unix-Tricks ist ^x^y
, dass er den letzten Befehl übernimmt und die erste Instanz von "x" durch "y" ersetzt. Ich frage mich jedoch, ob ein ähnlicher Trick funktioniert, um alle Instanzen von "x" durch "y" im letzten Befehl zu ersetzen .
97
command-history
Tag dafür verwenden. Hinzugefügt. Auch nehme ich an, Sie beziehen sich auf diebash
Shell?Antworten:
Sie können die
!!:gs/search/replace/
Notation verwenden, um das zu tun, was Sie wollen. Dies nutzt das globale Suchen & Ersetzen (:gs
):Vor
nach
Verweise
quelle
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
. Was vermisse ich?bash --version
= 4,2,45 (1) -Freisetzung.Ich glaube nicht, dass es eine einfache Möglichkeit gibt, etwas hinzuzufügen
^string1^string2
,bash
um jedes Vorkommen zu ersetzen. Wie slm betont, muss man schreiben!!:gs/string1/string1
.Aber in
zsh
können Sie nur hinzufügen:G
:In beiden
bash
undzsh
können Sie auch so verwendenfc -s
:Dies wird oft zu einem Alias namens gemacht,
r
damit Sie Folgendes tun können:quelle
Ich glaube, dass die beste Option ist, ": &" zu verwenden
quelle
:&
weitere Vorkommen zu ersetzen sind.