Jedną z moich ulubionych sztuczek uniksowych jest ^x^y
wzięcie ostatniego polecenia i zastąpienie pierwszego wystąpienia „x” „y”. Zastanawiam się jednak, czy podobna sztuczka działa w zamian wszystkich wystąpień „x” na „y” w ostatnim poleceniu?
97
command-history
tagu. Dodany. Zakładam też, że masz na myślibash
powłokę?Odpowiedzi:
Za pomocą
!!:gs/search/replace/
notacji możesz robić, co chcesz. Wykorzystuje to globalne wyszukiwanie i zamianę (:gs
):przed
po
Bibliografia
źródło
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
. czego mi brakuje?bash --version
= 4.2.45 (1) -release.Nie sądzę, że istnieje prosty sposób na dodanie czegoś, co
^string1^string2
sprawi, żebash
zastąpi każde wystąpienie. Jak wskazuje SLM, musisz pisać!!:gs/string1/string1
.Ale
zsh
możesz po prostu dodać:G
:W obu przypadkach
bash
, azsh
można też użyćfc -s
takiego:Często jest to przekształcane w alias o nazwie,
r
dzięki czemu możesz po prostu:źródło
Uważam, że najlepszą opcją jest użycie „: &”
źródło
:&
ile jest więcej wystąpień do zastąpienia.