Відповіді:
Ви можете використовувати !!:gs/search/replace/
позначення, щоб робити те, що хочете. Для цього використовується глобальний пошук і заміна ( :gs
):
раніше
$ echo "harm warm swarm barm"
harm warm swarm barm
після
$ !!:gs/arm/orn/
echo "horn worn sworn born"
horn worn sworn born
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
. Що я пропускаю?
bash --version
= 4.2.45 (1) -випуск.
Я не вірю , що є простий спосіб додати що - то , ^string1^string2
щоб зробити bash
заміну всіх входжень. Як вказує slm, ви повинні писати !!:gs/string1/string1
.
Але в zsh
, ви можете просто додати :G
:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
І в обох, bash
і zsh
ви також можете використовувати fc -s
так:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Це часто створюється псевдонімом, який називається, r
так що ви можете просто робити:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Я вважаю, що найкращим варіантом є використання ": &"
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&
скільки є більше випадків для заміни.
command-history
тег. Додано. Також я припускаю, що ви маєте на увазіbash
оболонку?