Ответ 1
man bash
говорит, что ^old^new
эквивалентно !!:s/old/new/
. Вы хотите !!:gs/old/new/
заменить глобально.
Иногда я использую команду 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.
man bash
говорит, что ^old^new
эквивалентно !!:s/old/new/
. Вы хотите !!:gs/old/new/
заменить глобально.
Простым способом сделать это будет:
fc -s checkbox=radio
У меня есть псевдоним r
, определенный в моем .bashrc
:
alias r='fc -s'
Тогда то, что вы хотите сделать, будет:
r checkbox=radio
Подробнее см. мой ответ на скрытые функции bash ".