Подтвердить что ты не робот

Замена истории командной строки Unix ^ foo ^ bar (для нескольких заметок)

Иногда я использую команду bash для замены строки в предыдущей команде:

^foo^bar

Сегодня я хотел сделать замену в следующей строке для замены всех вхождений checkbox на `radio:

$ git mv _product_checkbox_buttons.html.erb _product_checkbox_button.html.erb
$ ^checkbox^radio
git mv _product_radio_buttons.html.erb _product_checkbox_button.html.erb

Таким образом, он заменяет только первое вхождение. Как мне заменить все вхождения?

bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
4b9b3361

Ответ 1

man bash говорит, что ^old^new эквивалентно !!:s/old/new/. Вы хотите !!:gs/old/new/ заменить глобально.

Ответ 2

Простым способом сделать это будет:

fc -s checkbox=radio

У меня есть псевдоним r, определенный в моем .bashrc:

alias r='fc -s'

Тогда то, что вы хотите сделать, будет:

r checkbox=radio

Подробнее см. мой ответ на скрытые функции bash ".