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

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

^foo^bar

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

$ 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.
23
задан Jesper Rønn-Jensen 17 February 2010 в 13:03
поделиться

2 ответа

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

32
ответ дан 29 November 2019 в 01:45
поделиться

Простой способ сделать это:

fc -s checkbox=radio

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

alias r='fc -s'

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

r checkbox=radio

Смотрите мой ответ на вопрос "скрытые возможности bash" для деталей.

14
ответ дан 29 November 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: